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

Oracle SQL查询报缺失关键字错误求助:CASE语句语法问题

解决你的SQL "缺失关键字" 错误

嘿,这个问题很常见——你在这里混淆了CASE表达式的两种写法!

你当前用的是简单CASE表达式的结构:

CASE salary WHEN ... THEN ...

但这种写法只能用来匹配salary等于某个特定值的情况,没办法处理像commission_pct > 0 AND commission_pct <= 0.15这样的范围/复合判断条件,这就是系统报错"缺失关键字"的核心原因。

你需要改成搜索CASE表达式,也就是去掉CASE后面紧跟的salary,直接在每个WHEN子句里写完整的判断条件。修正后的SQL如下:

SELECT 
    employee_id,
    first_name,
    last_name,
    CASE
        WHEN (commission_pct > 0) AND (commission_pct <= 0.15) THEN salary * 20 / 100
        WHEN commission_pct > 0.15 THEN salary * 25 / 100
        ELSE 0
    END AS INCENTIVE_AMT
FROM employees
ORDER BY employee_id;

关键改动说明:

  • 移除了CASE后面的salary,因为我们不需要针对salary做等于匹配,而是基于commission_pct的条件来计算奖金
  • 每个WHEN直接跟完整的布尔判断条件,这是搜索CASE表达式的标准写法,支持所有合法的SQL条件判断
  • 给计算结果列加上了AS关键字显式命名(虽然部分数据库允许省略,但显式写法更规范易读)

这样执行的话,就能正确根据commission_pct的范围计算INCENTIVE_AMT了。

内容的提问来源于stack exchange,提问作者ADITYA GUPTA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:50:38