Я использую 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 |
+----------------+
Спасибо за любую помощь заранее!
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;
Привет, предложение where решило проблему, с которой я столкнулся. Большое спасибо!