选择表达式时如何做大小写?
Posted
技术标签:
【中文标题】选择表达式时如何做大小写?【英文标题】:How to do case when expression in select? 【发布时间】:2019-06-17 08:01:27 【问题描述】:我尝试使用 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;
【问题讨论】:
您在使用聚合函数时可能需要 group by 您确定您的表有一个名为DATUM_EINDE
的列以及一个名为DATUM_EINDE_AANPAK
的列吗?您可能错过了第一行中的下划线。
查看此链接:techonthenet.com/oracle/functions/case.php
轻松为您提供帮助:***.com/help/minimal-reproducible-example(您将获得更好的答案,更快。)
【参考方案1】:
如果我理解正确的话,我猜这就是你要找的;对于 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>
【讨论】:
【参考方案2】:像下面这样使用最大值
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
【讨论】:
【参考方案3】:使用 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
【讨论】:
以上是关于选择表达式时如何做大小写?的主要内容,如果未能解决你的问题,请参考以下文章
如何写匹配任意个26个大小写字母,数字和下划线的Java正则表达式呢?
用word做论文,如何快速设置栏公式编辑器里面的公式文字大小跟我的正文一样,都是一样的大小?急急急、、、