[英]Combining CASE Statements in SQL
我正在尝试做的是合并(2)CASE语句,每个语句返回一个SUM,然后取这些结果的SUM。 这是我到目前为止的内容:
COUNT((
CASE (COUNT(table.CODE))
WHEN 0
THEN 0
ELSE SUM(
CASE table.CODE
WHEN '100'
THEN 1
ELSE 0
END)) (
CASE (COUNT(table.CODE))
WHEN 0
THEN 0
ELSE (SUM(
CASE table.CODE
WHEN '50'
THEN 1
ELSE 0
END))))
|| AS Total Code
我觉得这太复杂了。 我收到的错误是缺少关键字(在第二个CASE语句的开头)。 有什么想法吗?
当括号过多时,您可能会发现缩进过度发现问题会有所帮助:
COUNT
(
(
CASE (COUNT(table.CODE))
WHEN 0
THEN 0
ELSE SUM
(
CASE table.CODE
WHEN '100'
THEN 1
ELSE 0
END
)
<--Should be an END here?-->
) <--What is happening here-->
(
CASE (COUNT(table.CODE))
WHEN 0
THEN 0
ELSE
(
SUM
(
CASE table.CODE
WHEN '50'
THEN 1
ELSE 0
END
)
)
<--Should be an END here?-->
)
)
|| AS Total Code
您会看到有两个CASE语句彼此对接,没有运算符使它变得毫无意义。
您可能还会发现,第一个和第三个CASE
没有以END
,这正是MySQL所追求的。
最后,MySQL中的双杠是“或”运算符。 但是您什么也没做……不知道这里的计划是什么。
不过,最终,我认为您将在计算同一查询中的总和时遇到问题。 您可能必须将那些SUM(CASE...END)
位移到子查询中,然后在其外执行COUNT
。
在查看了我的问题的答案之后,这就是我的想法:
CASE (COUNT(table.CODE))
WHEN 0
THEN 0
ELSE ((SUM(
CASE table.CODE
WHEN '100'
THEN 1
WHEN '50'
THEN 1
ELSE 0
END))
END) AS Value5
我正在清理旧代码,所以我不完全明白自己在看什么,因为它遍地都是。 这非常干净,我很肯定自己现在正在获得期望的响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.