如果你真的这样写查询,难怪你会出错。那是不可读的。
虽然,当正确格式化并修复错误时(它是错位的WHEN),它似乎正在返回一些东西。为了测试它,我创建了一个虚拟 CTE 并删除了 Aggregation 和 HKLRR_UAT_USER,因为我没有这些用户。
SQL> WITH
2 aggr_707884
3 AS
4 (SELECT '2021-09-11 12:22:33' reporting_position_date FROM DUAL)
5 SELECT CASE
6 WHEN TO_DATE (
7 TO_CHAR (
8 TO_DATE (REPORTING_POSITION_DATE,
9 'YYYY-MM-DD HH24:MI:SS'),
10 'YYYY-MM-DD HH24:MI:SS'),
11 'YYYY-MM-DD HH24:MI:SS') >
12 TO_DATE ('2021-06-30 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
13 THEN
14 'FALSE'
15 WHEN TO_DATE (
16 TO_CHAR (
17 TO_DATE (REPORTING_POSITION_DATE,
18 'MM/DD/YYYY HH24:MI:SS'),
19 'YYYY-MM-DD HH24:MI:SS'),
20 'YYYY-MM-DD HH24:MI:SS') >
21 TO_DATE ('2021-06-30 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
22 THEN
23 'FALSE'
24 ELSE
25 'TRUE'
26 END result
27 FROM aggr_707884
28 /
RESUL
-----
FALSE
SQL>
不知道你为什么要嵌套那么多TO_DATE/TO_CHAR函数;代码可以缩短为
SQL> WITH
2 aggr_707884
3 AS
4 (SELECT '2021-09-11 12:22:33' reporting_position_date FROM DUAL)
5 SELECT CASE
6 WHEN TO_DATE (REPORTING_POSITION_DATE, 'YYYY-MM-DD HH24:MI:SS') >
7 TO_DATE ('2021-06-30 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
8 THEN
9 'FALSE'
10 WHEN TO_DATE (REPORTING_POSITION_DATE, 'MM/DD/YYYY HH24:MI:SS') >
11 TO_DATE ('2021-06-30 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
12 THEN
13 'FALSE'
14 ELSE
15 'TRUE'
16 END result
17 FROM aggr_707884
18 /
RESUL
-----
FALSE
SQL>
最后,您似乎在重复WHEN 条件(因此删除其中一个)并假设reporting_position_date 列的数据类型是DATE(应该是;不要将日期值存储为字符串),它变得如此简单
SQL> WITH aggr_707884 AS (SELECT SYSDATE reporting_position_date FROM DUAL)
2 SELECT CASE
3 WHEN REPORTING_POSITION_DATE > DATE '2021-06-30' THEN 'FALSE'
4 ELSE 'TRUE'
5 END result
6 FROM aggr_707884;
RESUL
-----
FALSE
SQL>