如何获取查询以基于总计返回某些记录

时间:2015-05-21 13:59:56

标签: sql-server

我的记录集看起来像这样:

Group Number   Amount
A     11        10
A     12        -15
A     13        20
B     21        -10
B     22        15
B     23        -20

我想要的是一个查询,如果该组的总量大于零,则返回组内的所有行 对于A组,总数为15,因此我希望A组的所有记录都返回。 对于B组,总数为-15,因此不应从B组返回任何记录。

2 个答案:

答案 0 :(得分:1)

试试这个:

     select * from yourTable where [Group] in
     (select [Group] from yourTable group by [Group] having SUM(Amount) > 0)

答案 1 :(得分:1)

您可以使用SUM with OVER子句来完成此任务:

SELECT [Group], Number, Amount
FROM (
   SELECT [Group], Number, Amount,
          SUM(Amount) OVER (PARTITION BY [Group]) AS sumOfGroup
   FROM mytable ) t
WHERE t.sumOfGroup > 0

Fiddle Demo