Как сделать случай, когда выражение в select? - PullRequest
0 голосов
/ 17 июня 2019

Я пытался сделать оператор SELECT со случаем, когда выражение.
Я получаю сообщение об ошибке

Неверный оператор SQL

Это для Oracle SQL:

SELECT DATUM_EINDE AANPAK,
       CASE WHEN DATUM_EINDE_AANPAK IS NULL THEN DATUM_EINDE_AANPAK
       ELSE MAX(DATUM_EINDE_AANPAK)
       END AS DATUM_EINDE_AANPAK
FROM T_CJIB_CVE;

Ответы [ 3 ]

0 голосов
/ 17 июня 2019

используйте максимум как показано ниже

SELECT DATUM_EINDE, AANPAK,
       max(CASE WHEN DATUM_EINDE_AANPAK IS NULL THEN DATUM_EINDE_AANPAK
       ELSE DATUM_EINDE_AANPAK END)
        AS DATUM_EINDE_AANPAK
FROM T_CJIB_CVE group by DATUM_EINDE, AANPAK
0 голосов
/ 17 июня 2019

Использовать CASE с подзапросом для получения максимальной даты

SELECT CASE WHEN datum_einde_aanpak IS NULL THEN null
  ELSE (SELECT MAX(datum_einde_aanpak) as max_date FROM t_cjib_cve) 
  END as datum_einde_aanpak
FROM t_cjib_cve a
0 голосов
/ 17 июня 2019

Если я вас правильно понял, я думаю, это то, что вы ищете; для ID = 2 элемент данных равен нулю, поэтому - взять максимальный элемент данных из всей таблицы.

SQL> with t_cjib_cve (id, datum_einde_aanpak) as
  2    (select 1, date '2019-06-17' from dual union all
  3     select 2, null              from dual union all
  4     select 3, date '2019-01-01' from dual
  5    )
  6  select datum_einde_aanpak,
  7         case when datum_einde_aanpak is null then
  8                     (select max(datum_einde_aanpak) from t_cjib_cve)
  9              else datum_einde_aanpak
 10         end result
 11  from t_cjib_cve;

DATUM_EIND RESULT
---------- ----------
2019-06-17 2019-06-17
           2019-06-17
2019-01-01 2019-01-01

SQL>
...