Angenommen, ich habe Tabellen a (mit Spalte a1) und b (mit Spalten b1 und b2) und führe einen Left Outer Join durch
SELECT *
FROM a LEFT OUTER JOIN b
ON a.a1 = b.b1
Dann werden b1 und b2 NULL sein, wobei ein Wert von a1 keinen übereinstimmenden Wert von b1 hat.
Kann ich einen Standardwert für b2 anstelle von NULL angeben? Beachten Sie, dass COALESCE funktioniert hier nicht, weil ich nicht den Standardwert Potential NULLs in b2 außer Kraft setzen möchten , wo es ist ein Wert von b1 Anpassung a1.
Das heißt, mit a und b als
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
und eine Standardeinstellung für b2 von beispielsweise 100, möchte ich das Ergebnis erhalten
a1 | b1 | b2
---------------
1 | 1 | 10
2 | NULL | 100
3 | 3 | NULL
In diesem einfachen Fall könnte ich es "von Hand" tun, indem ich prüfe, ob b1 in der Ausgabe NULL ist. Ist das die beste Option im Allgemeinen, oder gibt es eine normalere und ordentlichere Möglichkeit?
sql
(was "SQL als Abfragesprache" bedeutet. Dieses Tag kennzeichnet kein bestimmtes DBMS-Produkt oder keinen bestimmten Dialekt). Der Teil:[b2]=CASE WHEN ... END
ist ein ungültiger (Standard-) SQL-Ausdruck.