テーブルa(列a1)およびb(列b1およびb2)があり、左外部結合を実行するとします。
SELECT *
FROM a LEFT OUTER JOIN b
ON a.a1 = b.b1
b1とb2は、a1の値に一致するb1の値がない場合、NULLになります。
NULLの代わりにb2のデフォルト値を提供できますか?私はのでCOALESCEが、ここでは動作しないことに注意していないがどこB2の潜在的なNULLを上書きするデフォルト値をしたいです B1マッチングa1の値が。
つまり、aとbは
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
そして、例えば100のb2のデフォルトは、結果を取得したい
a1 | b1 | b2
---------------
1 | 1 | 10
2 | NULL | 100
3 | 3 | NULL
この単純なケースでは、出力でb1がNULLであるかどうかを調べることにより、「手動で」それを行うことができます。それは一般的に最良の選択肢ですか、それとももっと標準的でよりきれいな方法がありますか?
sql
(「クエリ言語のSQL」を意味します。このタグは特定のDBMS製品または方言を示しません)。part:[b2]=CASE WHEN ... END
は無効な(標準)SQL式です。