Припустимо, у мене є таблиці a (зі стовпцем a1) і b (зі стовпцями b1 і b2), і я виконую ліве зовнішнє з'єднання
SELECT *
FROM a LEFT OUTER JOIN b
ON a.a1 = b.b1
Тоді b1 і b2 будуть NULL, коли значення a1 не має відповідного значення b1.
Чи можу я вказати значення b2 за замовчуванням замість NULL? Зауважте, що COALESCE тут не працюватиме, тому що я не хочу, щоб значення за замовчуванням переосмислювало потенційні NULL в b2, де є значення 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
і за замовчуванням для b2, скажімо, 100, я хочу отримати результат
a1 | b1 | b2
---------------
1 | 1 | 10
2 | NULL | 100
3 | 3 | NULL
У цьому простому випадку я міг би це зробити "від руки", переглядаючи, чи b1 NULL на виході. Це взагалі найкращий варіант, чи існує більш стандартний і акуратний спосіб?
sql
(що означає "SQL мова запиту". Цей тег не позначає конкретного продукту або діалекту СУБД). Частина:[b2]=CASE WHEN ... END
є невірним (стандартним) виразом SQL.