Supponiamo che io abbia le tabelle a (con la colonna a1) e b (con le colonne b1 e b2) e eseguo un join esterno sinistro
SELECT *
FROM a LEFT OUTER JOIN b
ON a.a1 = b.b1
Quindi b1 e b2 saranno NULL dove un valore di a1 non ha valore corrispondente di b1.
Posso fornire un valore predefinito per b2, anziché NULL? Si noti che COALESCE non funziona qui, perché io non voglio che il valore di default per ignorare i potenziali NULL in b2 in cui v'è un valore di b1 a1 corrispondenza.
Cioè, con a e b come
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
e un valore predefinito per b2, diciamo, 100, voglio ottenere il risultato
a1 | b1 | b2
---------------
1 | 1 | 10
2 | NULL | 100
3 | 3 | NULL
In questo semplice caso ho potuto farlo "a mano" osservando se b1 è NULL nell'output. È l'opzione migliore in generale o esiste un modo più standard e ordinato?
sql
(che significa "SQL il linguaggio delle query". Quel tag non indica alcun prodotto o dialetto DBMS specifico). La parte:[b2]=CASE WHEN ... END
è un'espressione SQL (standard) non valida.