Условный нуль, не ноль в столбце оператора выбора - SQL Server

Пожалуйста, посмотрите на это и дайте мне знать возможное решение?

Данные для отображения из таблицы:

select a,b,d,e from table xyz.
  • когда c равен нулю, покажите d со значением

или же

  • когда c не ноль, покажите e со значением

Требуются данные:

Данные выглядят так

a b  c          d e 
1 2  null         2
1 2  not null   2  

Из приведенных выше данных, если c равно нулю, отобразить d = b, иначе e = b.

Как написать правильный запрос SQL для вышеуказанных условий, как я пытался случай, он не работает.

Заранее спасибо.

2 ответа

SELECT CASE WHEN c IS NULL THEN d ELSE e END

Бит об отображении d = b, иначе e = b приводит меня к мысли, что вы также можете пытаться сравнить значения NULL и NOT NULL.

Важно понимать, что SQL NULL означает "Неизвестно", и поэтому сравнение между известным значением и неизвестным значением невозможно.

В этом случае я предлагаю использовать Coalesce для изменения значения, когда оно равно NULL, на что-то сопоставимое, что не повлияет на вашу логику.

Coalesce(d, 0) = b
SELECT CASE WHEN c IS NULL THEN d ELSE e END
Другие вопросы по тегам