You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle使用CASE WHEN与SUM写查询报缺失右括号/关键字问题求助

Oracle查询报错排查与修复方案

首次报错(缺失右括号)原因

Oracle 不支持 SUM(布尔表达式) 这类简化语法(该写法仅在MySQL等少数数据库中生效),你在SUM函数中直接写入status = 'DELIVERED'判断逻辑,SQL解析器无法识别该表达式结构,误以为语句未闭合,因此抛出缺失右括号的错误。

第二次报错(缺失关键字)原因

调整后的写法存在两处语法错误:

  • SUM(c.status) 属于逻辑错误:status是字符串类型字段,SUM函数仅支持对数值类型做聚合运算,无法对字符串求和
  • 连续等号SUM(c.status) = 'DELIVERED' = (count(c.status))不符合Oracle语法规则,SQL解析器无法匹配到预期的逻辑关键字,因此抛出缺失关键字的错误。

正确修复方案

你需要把判断逻辑放到SUM内部的CASE WHEN语句中,对符合条件的行计数1、不符合的计数0,求和后的值就是符合条件的总行数,正确代码如下:

SELECT  c.Customer_name,
        CASE WHEN SUM(CASE WHEN c.status = 'DELIVERED' THEN 1 ELSE 0 END) = count(*) THEN 'A'
            WHEN SUM(CASE WHEN c.status = 'DELIVERED' THEN 1 ELSE 0 END) > 0  THEN 'B'
            WHEN SUM(CASE WHEN c.status = 'SUBMITTED' THEN 1 ELSE 0 END) > 0  THEN 'C'
             ELSE 'No Match'
        END AS Match
FROM    Customer_Order c
GROUP BY c.Customer_name 
ORDER BY c.Customer_name;

内容的提问来源于stack exchange,提问作者Student of the Digital World

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:42:02