Existe-t-il un moyen d'utiliser la valeur du test CASE WHEN comme l'un de ses résultats sans écrire deux fois l'instruction select (car cela peut être long et salissant)? Par exemple:Y a-t-il un moyen de faire en sorte que le test CASE WHEN teste l'un des résultats plutôt que de l'exécuter deux fois?
SELECT id,
CASE WHEN (
(SELECT MAX(value) FROM my_table WHERE other_value = 1) IS NOT NULL
)
THEN (
SELECT (MAX(value) FROM my_table WHERE other_value = 1
)
ELSE 0
END AS max_value
FROM other_table
Est-il possible que je peux utiliser le résultat de la première exécution de l'instruction SELECT (pour le test) que la valeur THEN ainsi? J'ai essayé d'utiliser "AS max_value" après le premier SELECT mais cela m'a donné une erreur SQL.
Mise à jour: Oups, comme Tom H. l'a souligné, j'ai oublié le "IS NOT NULL" dans ma question initiale.
Merci, c'était la vraie réponse à ma question, bien que la fonction COALESCE dans la réponse de Tom H soit une façon plus simple d'arriver là où j'essayais réellement d'aller. Je n'ai pas pensé à les définir dans une sous-requête en premier. – Charles