【发布时间】:2012-10-12 00:10:07
【问题描述】:
我正在尝试使用 "CASE" 操作执行选择语句,但它说我的条件 (abc.reason) 无效,因为它既不包含在聚合函数中,也不包含在聚合函数中或GROUP BY 子句。我尝试将它添加到 GROUP BY 子句,但在我的结果表中创建了一个不必要的行。有什么建议吗?
SELECT
DISTINCT ID
,(CASE WHEN reason = 4 THEN null ELSE SUM(quantity*price) END) AS Value
,COUNT(*) AS CountAll
来自交易数据库
GROUP BY ID
ORDER BY ID DESC
如果我将 GROUP BY 子句更改为 GROUP BY ID, reason,那么我的结果是:
ID ---- VALUE ----- COUNTALL
id1 - - 1000 - - - - - 22
id1 - - - NULL - - - - 1
id2 - - - - 232 - - - 17
id3 - - - - 113 -- - - 2
id3 - - - - NULL - - 1
当我真的需要结果时:
ID ---- VALUE ----- COUNTALL
id1 - - 1000 - - - - - 23
id2 - - - - 232 - - - 17
id3 - - - - 113 -- - - 3
提前谢谢你!!!!
【问题讨论】:
标签: sql sql-server-2008