在我的案例中,如何使用SQL Server进行分组?

在我的案例中,如何使用SQL Server进行分组?,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我想根据数量值计算数量之和 比如说 我想按ItemNo进行分组,并进行如下计算 ItemNo Quantity Positive Negative ----------------------------------------- 111 6 8 -2 112 10 10 0 我试过这样做 SELECT ItemNo, Sum(Quantity), C

我想根据数量值计算数量之和

比如说

我想按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
我知道这个分组是错误的。我的问题应该是什么


谢谢

只要把总数写在你的案例陈述上就行了:

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;

此外,请按从组中删除数量。你是用一个和来聚合数量,所以按它分组也是毫无意义的。

只要把这个和放在你的案例陈述周围就行了:

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;

此外,请按从组中删除数量。你是用一个和来聚合数量,所以按它分组也是毫无意义的。

如果我有这个名声,我会把这个作为对JNevill答案的评论,但你也会想给数量和一个别名来获得问题中的结果。例如:选择 项目编号:, 数量, SUMCase当数量>=0时,其他数量0结束为正, SUMCase当数量<0时,其他数量0结束为负 从…起 销售额 分组
项目编号

如果我有声誉的话,我会将此作为对JNevill回答的评论,但您也会希望给数量总和一个别名,以获得问题中的结果。例如:选择 项目编号:, 数量, SUMCase当数量>=0时,其他数量0结束为正, SUMCase当数量<0时,其他数量0结束为负 从…起 销售额 分组 项目编号

可能的重复可能的重复