Sql 如何对嵌套case语句求和
我试图创建一个查询,统计客户添加和修改的扣减额,以及内部支持代表的扣减额。我得到错误ORA-00905缺少关键字,就在查询的第一个结尾之后。我不知道如何对嵌套的case语句求和Sql 如何对嵌套case语句求和,sql,oracle11g,Sql,Oracle11g,我试图创建一个查询,统计客户添加和修改的扣减额,以及内部支持代表的扣减额。我得到错误ORA-00905缺少关键字,就在查询的第一个结尾之后。我不知道如何对嵌套的case语句求和 SELECT sum(CASE WHEN ded.ACTION = 'A' --added deduction THEN CASE WHEN REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END) END AS "Added
SELECT
sum(CASE WHEN ded.ACTION = 'A' --added deduction
THEN
CASE WHEN REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END)
END AS "Added By Clients", -- count # of client deductions
sum(CASE WHEN ded.ACTION = 'A' -- added deduction
THEN
CASE WHEN NOT REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END)
END AS "Added by Internal Reps" -- count # of internal rep deductions
sum(CASE WHEN ded.ACTION <> 'A' --modified deduction
THEN
CASE WHEN REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END)
END AS "Modified By Clients", -- count # of client deductions
sum(CASE WHEN ded.ACTION <> 'A' -- modified deduction
THEN
CASE WHEN NOT REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END)
END AS "Modified by Internal Reps" -- count # of internal rep deductions
FROM DEDUCTIONS_TBL DED
谢谢你的帮助 首先为什么要嵌套CASE语句?不应该是这样吗
sum(CASE WHEN ded.ACTION = 'A'
AND REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END)
等等
你得到了一个错误,因为你有两个案例。。。案例但在总和中只有一端。除此之外还有一个目的,但实际上这只是一个错误的括号组:
(CASE ...) END
@Jnevill的帖子帮我修复了它。在声明别名之前,我删除了第一个结尾之后的括号,并将其放在第二个结尾之后
SELECT
sum(CASE WHEN ded.ACTION = 'A' --added deduction
THEN
CASE WHEN REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END
END) AS "Added By Clients", -- count # of client deductions
sum(CASE WHEN ded.ACTION = 'A' --added deduction
THEN
CASE WHEN NOT REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END
END) AS "Added by Internal Reps", -- count # of client deductions
sum(CASE WHEN ded.ACTION <> 'A' --modified deduction
THEN
CASE WHEN REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END
END) AS "Modified By Clients", -- count # of client deductions
sum(CASE WHEN ded.ACTION <> 'A' -- modified deduction
THEN
CASE WHEN NOT REGEXP_LIKE(ded.oper_ID, '[[:digit:]]') THEN 1 ELSE 0 END
END) AS "Modified by Internal Reps" -- count # of internal rep deductions
您的语法如下所示:SUMCASE。。。结束为别名结束结束时,右括号将您的CASE语句切碎。在SUM.case表达式中插入最后一个结尾…@jnevil找到了。谢谢可能嵌套的case不是我需要的。ded.action可以是'A'或'M'或'D'。A=已添加。D或M=根据情况进行修改。ded.oper_ID=添加、修改或删除的用户。这可以是内部代表或客户,具体取决于:digit:因此,我正在尝试计算内部代表和客户添加或修改了多少扣减额。@CraigB我不确定该评论与我的答案有何关联。我建议的代码不起作用吗?