Случай, когда синтаксис возвращает дополнительные NULL - PullRequest
0 голосов
/ 29 мая 2019

Я использую случай, когда в приведенном ниже коде и в результате получаются дополнительные значения 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      |  
+----------------+

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

1 Ответ

1 голос
/ 29 мая 2019

CASE возвращает NULL, если ни одна из ветвей WHEN не соответствует и не определена ветка ELSE. Таким образом, вы получаете NULL s для записей, где 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...