Supposons que j'ai des tables a (avec la colonne a1) et b (avec les colonnes b1 et b2) et que j'effectue une jointure externe gauche
SELECT *
FROM a LEFT OUTER JOIN b
ON a.a1 = b.b1
Alors b1 et b2 seront NULL où une valeur de a1 n'a pas de valeur correspondante de b1.
Puis-je fournir une valeur par défaut pour b2, au lieu de NULL? Notez que COALESCE ne fonctionnera pas ici, car je ne veux pas que la valeur par défaut remplace les NULL potentiels dans b2 où il y a une valeur de b1 correspondant à a1.
Autrement dit, avec a et b comme
CREATE TABLE a (a1)
AS VALUES (1),
(2),
(3) ;
CREATE TABLE b (b1,b2)
AS VALUES (1, 10),
(3, null) ;
a1 b1 | b2
--- --------
1 1 | 10
2 3 | NULL
3
et une valeur par défaut pour b2 de, disons 100, je veux obtenir le résultat
a1 | b1 | b2
---------------
1 | 1 | 10
2 | NULL | 100
3 | 3 | NULL
Dans ce cas simple, je pourrais le faire "à la main" en regardant si b1 est NULL dans la sortie. Est-ce la meilleure option en général, ou existe-t-il une manière plus standard et plus soignée?
sql
(ce qui signifie "SQL le langage de requête". Cette balise ne désigne aucun produit SGBD ou dialecte spécifique). La partie:[b2]=CASE WHEN ... END
est une expression SQL non valide (standard).