Установка для столбца отчета значения YES или NO на основе даты - Oracle SQL - PullRequest
0 голосов
/ 26 октября 2018

У меня есть запрос, который создаст отчет (электронная таблица Excel), и теперь мне нужно добавить два столбца: «DNR 2017» и «DNR 2018» в отчет.В таблице есть столбец с именем DNRDATE (формат dd-MON-yy), и если он равен NULL, мне нужно, чтобы оба столбца сказали «НЕТ» в отчете.Если есть DNRDATE, необходимо проверить, является ли эта дата 2017 или 2018. Если это 2017, то оба столбца получают «ДА».Если это 2018, то «2017 DNR» получает «НЕТ», а 2018 - «ДА».

Должен ли я использовать СЛУЧАЙ КОГДА для этого?И как это будет работать?

1 Ответ

0 голосов
/ 26 октября 2018
SELECT CASE WHEN to_char(dnrdate,'YYYY') = '2017' THEN 'YES' ELSE 'NO' END "2017 DNR",
       CASE WHEN to_char(dnrdate,'YYYY') = '2018' THEN 'YES' ELSE 'NO' END "2018 DNR"
FROM ...

Не беспокойтесь о специальной логике для значений NULL.Если DNRDATE IS NULL, то оба выражения вернутся «НЕТ».

Полный пример:

WITH test_data (dnrdate) AS ( 
  SELECT to_date('05-JUN-2017','DD-MON-YYYY') FROM DUAL UNION ALL 
  SELECT to_date('05-JUN-2018','DD-MON-YYYY') FROM DUAL UNION ALL 
  SELECT NULL FROM DUAL )
SELECT dnrdate,
       CASE WHEN to_char(dnrdate,'YYYY') = '2017' THEN 'YES' ELSE 'NO' END "2017 DNR",
       CASE WHEN to_char(dnrdate,'YYYY') = '2018' THEN 'YES' ELSE 'NO' END "2018 DNR"
FROM test_data
+-----------+----------+----------+
|  DNRDATE  | 2017 DNR | 2018 DNR |
+-----------+----------+----------+
| 05-JUN-17 | YES      | NO       |
| 05-JUN-18 | NO       | YES      |
|           | NO       | NO       |
+-----------+----------+----------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...