【问题标题】:Using multiple conditions in an Oracle WHEN CASE在 Oracle WHEN CASE 中使用多个条件
【发布时间】:2018-11-16 12:43:30
【问题描述】:

我在 CASE 中使用 CASE 时遇到了一些问题,我需要在 WHEN 子句中执行两次检查,但它失败了,例如:

CASE
WHEN trim(to_char(sysdate,'DAY')) = 'TUESDAY' THEN
CASE 
WHEN ((max(trunc(initial_date)) < trunc(sysdate)) AND name like 'Ma%') OR ((max(trunc(initial_date)) < trunc(sysdate)) AND name like 'Rna%') THEN 'something'
WHEN ((max(trunc(initial_date)) < trunc(sysdate)) AND name like '%ame') OR ((max(trunc(initial_date)) < trunc(sysdate)) AND name like '%ore') THEN 'somethingelse'
END
ELSE 'noproblemo'
END
as 'info',
'username' as username
from DBtable@dblink
where initialdate < trunc(sysdate)
and details = 'Criteria for search'

现在抛出:

ORA-00937: 不是单组群函数 ORA-02063: DBLINK 的前一行

任何指针都非常感谢

【问题讨论】:

    标签: database oracle case


    【解决方案1】:

    我想你错过了另一个END,因为它是NESTED CASE EXPRESSION

    CASE
        WHEN trim(to_char(sysdate,'DAY')) = 'TUESDAY' THEN
        (CASE 
        WHEN ((max(trunc(initial_date)) over() < trunc(sysdate)) AND name like 'Ma%') OR ((max(trunc(initial_date))  over() < trunc(sysdate)) AND name like 'Rna%') THEN 'something'
        WHEN ((max(trunc(initial_date))  over() < trunc(sysdate)) AND name like '%ame') OR ((max(trunc(initial_date)) over() < trunc(sysdate)) AND name like '%ore') THEN 'somethingelse'
        ELSE 'noproblemo'
        END)
        END,
        'username' as username
        from DBtable@dblink
        where initialdate < trunc(sysdate)
        and details = 'Criteria for search'
    

    【讨论】:

    • 我已经更新了查询。 END在那里。问题似乎是 WHEN 子句中的多个操作?
    • ORA-00937:不是单组函数 ORA-02063:来自 DBLINK 的前一行
    • 我编辑了我的答案以修复 ORA-00937: not a single-group group function。并修复 ORA-02063: DBLINK 错误的前一行,请查看此community.oracle.com/thread/3904205
    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2021-11-04
    • 2021-08-04
    • 2017-04-20
    • 1970-01-01
    • 2020-02-04
    • 2022-08-17
    • 2018-06-11
    相关资源
    最近更新 更多