【发布时间】:2021-09-29 09:29:06
【问题描述】:
我有一个表Table_A,其中包含 A、B 和 C 列,其中 C 列需要求和,但前提是 B 列是某个值。否则,C 列可能并不总是包含要求和的值。
所以正常的SQL:
SELECT A, B, SUM(C)
FROM Table_A
WHERE B = 'value condition'
GROUP BY A,B
效果很好。但是,我认为我可以使用“CASE WHEN”来捕捉零条件,例如:
SELECT
A, B,
CASE WHEN B = 'value condition' THEN SUM(C) ELSE 0 END
FROM Table_A
GROUP BY A, B
我收到一个错误,指的是它仍在尝试SUM 一个不在条件中的值。我错过了什么吗?还是我误解了CASE WHEN?
【问题讨论】:
-
提示:
SUM(CASE WHEN B = 'value condition' THEN C ELSE 0 END) -
SUM应该在 整个CASE表达式周围。 -
您的示例运行良好,您没有向我们展示实际查询或实际错误。演示:dbfiddle.uk/…
-
张贴您遇到的任何错误消息的完整内容(全部 - 代码、级别等)以供将来参考。
标签: sql sql-server case