2017-08-07 74 views
1

我想基于数量值来计算数量的总和如何在使用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 

我知道这个分组是错误的。我的查询应该如何?

感谢

+0

可能的重复[在SQL Server中使用CAS函数和SUM函数](https://stackoverflow.com/questions/17612387/use-case-statement-with-sum-function-in-sql-服务器) –

回答

6

只要把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

愚蠢的错误。谢谢你兄弟 –

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;

相关问题