ORA-00905: missing keyword报错求助:Oracle SQL统计查询问题
ORA-00905错误排查与正确SQL写法
你遇到的ORA-00905: missing keyword错误,是因为CASE表达式缺少了END关键字——Oracle要求CASE WHEN ... THEN ...的结构必须以END来闭合,否则会被判定为语法不完整。
修正后的正确SQL语句如下:
SELECT COUNT(CASE WHEN SAL IS NOT NULL THEN 1 END) AS SALARIED_DEPT30, COUNT(CASE WHEN COMM IS NOT NULL THEN 1 END) AS COMM_DEPT30 FROM EMP WHERE DEPTNO = 30;
说明:
- 这个语句会独立统计部门30中两个指标:
SALARIED_DEPT30是有工资(SAL非空)的员工数量,COMM_DEPT30是有佣金(COMM非空)的员工数量。 - 统计逻辑完全独立:哪怕员工只有工资没有佣金,也会被计入
SALARIED_DEPT30;反之只有佣金没有工资的员工,会被计入COMM_DEPT30,完全匹配你的需求。 - 你之前想避免的查询语句,是统计同时满足工资和佣金都非空的员工数,和你的需求完全不同,修正后的语句彻底解决了这个问题。
内容的提问来源于stack exchange,提问作者MagicBongos
相关产品推荐
相关产品推荐

