首页 > 解决方案 > 选择表达式时如何做大小写?

问题描述

我试图用 case when 表达式做一个 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;

标签: sqloraclecase-when

解决方案


如果我对您的理解正确,我想这就是您要寻找的;对于 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>

推荐阅读