如何在使用SQL Server的情况下进行分组?
问题描述:
我想基于数量值来计算数量的总和如何在使用SQL Server的情况下进行分组?
对于实例
ItemNo Quantity
------------------
111 5
111 -2
111 3
112 10
我想ItemNo
做分组和计算像下面
ItemNo Quantity Positive Negative
-----------------------------------------
111 6 8 -2
112 10 10 0
我想这样的
SELECT
ItemNo,
Sum(Quantity),
Case when Quantity >= 0 then sum(quantity) else 0 end POSITIVE,
Case when Quantity < 0 then sum(quantity) else 0 end Negative
From
Sales
Group By
ItemNo,
Quantity
我知道这个分组是错误的。我的查询应该如何?
感谢
答
只要把SUM()在你的CASE()语句:
SELECT
ItemNo,
Sum(Quantity),
SUM(Case when Quantity >= 0 then quantity else 0 end) POSITIVE,
SUM(Case when Quantity < 0 then quantity else 0 end) Negative
From
Sales
Group By
ItemNo;
此外,删除Quantity
从GROUP BY。您正在使用sum()汇总quantity
,所以对GROUP BY它也是无稽之谈。
+0
愚蠢的错误。谢谢你兄弟 –
答
如果我有信誉,我会把这留作JNevill的回答的一个评论,但你也想给数量和一个别名来得到问题的结果。例如:SELECT ItemNo, Sum(Quantity) Quantity, SUM(Case when Quantity >= 0 then Quantity else 0 end) Positive, SUM(Case when Quantity < 0 then Quantity else 0 end) Negative From Sales Group By ItemNo;
可能的重复[在SQL Server中使用CAS函数和SUM函数](https://*.com/questions/17612387/use-case-statement-with-sum-function-in-sql-服务器) –