database - 在 Oracle WHEN CASE 中使用多个条件
问题描述
我在 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 的前一行
任何指针都非常感谢
解决方案
我想你错过了另一个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'
推荐阅读
- css - 如何将两个模块并排放置在divi的同一列中?
- macos - WKWebView 显示白条,直到窗口移动/调整大小
- azure - 什么 Azure 托管会自动扩展 .NET Core Web API 服务?
- r - R:使用 ggplot2 在分组条形图上居中误差条
- c# - 您的 SQL 语法有错误;在 Visual Studio 2019 Windows 窗体上查看与您的 mariadb 服务器对应的手册
- c# - 如何创建一个新类来检查图像类型?
- excel - 公式里面的公式
- python - 如何根据索引列表插入值?
- amazon-web-services - 如何使用 Ansible 执行跨账户配置?
- python - 如何在 Raspberry Pi 4 中为多个输入设备执行多线程