Случай, когда синтаксис возвращает лишние NULL

Я использую Case When в приведенном ниже коде, и результат дает дополнительные значения NULL, которых не должно быть. Любые идеи, что я делаю неправильно с приведенным ниже кодом?

SELECT distinct
Case when
status_level = 'CLAIM'
AND 
 status = 'CLOSED'
THEN effective_date
END FirstCloseDate
FROM 
STATUS

Текущие результаты:

+----------------+
| FirstCloseDate |  
+----------------+
| (null)         |  
| 02-JUL-18      |  
+----------------+

Результат должен быть

+----------------+
| FirstCloseDate |  
+----------------+
| 02-JUL-18      |  
+----------------+

Спасибо за любую помощь заранее!

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
19
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

CASE дает NULL, если ни одна из ветвей WHEN не совпадает и ни одна ветвь ELSE не определена. Таким образом, вы получаете NULLs за записи, где status_level = 'CLAIM' AND status = 'CLOSED' не удовлетворен.

Ваш ожидаемый результат выглядит так, как будто вам нужны записи, соответствующие условию status_level = 'CLAIM' AND status = 'CLOSED'. Для фильтрации записей используйте предложение WHERE, а не CASE в списке столбцов.

SELECT DISTINCT
       effective_date firstclosedate
       FROM status
       WHERE status_level = 'CLAIM'
             AND status = 'CLOSED';

Вы можете дополнительно отфильтровать effective_date, которые есть NULL, если они есть, если вы хотите их опустить.

SELECT DISTINCT
       effective_date firstclosedate
       FROM status
       WHERE status_level = 'CLAIM'
             AND status = 'CLOSED'
             AND effective_date IS NOT NULL;

Привет, предложение where решило проблему, с которой я столкнулся. Большое спасибо!

Codash 29.05.2019 15:36

Другие вопросы по теме