我正在寻找一个sql查询的解决方案,它可以按nr分组,按值求和,但只保留值为正值的日期(对于相同的nr,只有1个为正,其余为负)。
SELECT NR, SUM(VALUE), DATE (MUST BE THE DATE WHERE VALUE IS POSITIVE) FROM TABLE GROUP BY NR
预期结果如果有人能解决这个问题,请帮忙。谢谢您。
wgmfuz8q1#
如果我了解你。。。
SELECT A.NR, SUM(A.VALUE) AS [Value], B.[Date] FROM YourTable A INNER JOIN ( SELECT Nr, MAX([Date]) As [Date] FROM YourTable WHERE [Value]>-1 GROUP BY Nr ) B ON A.Nr = B.Nr GROUP BY A.Nr, B.[Date]
aelbi1ox2#
可能就是这样
SELECT NR, SUM(VALUE), CASE WHEN VALUE > 0 THEN DATE ELSE '' END FROM ( SELECT * FROM tablename ORDER BY VALUE DESC ) GROUP BY NR
uttx8gqw3#
您的查询只是返回正值的最大日期。这是一个简单的聚合查询:
select nr, sum(value), max(date) from t group by nr having sum(value) > 0;
但是,该描述暗示了一个累积总和,如下所示:
select t.* from (select t.*, sum(value) over (order by date) as running_value from t ) t where running_value > 0;
对于问题中的数据,这恰好返回相同的结果。然而,这似乎是你想要的。
3条答案
按热度按时间wgmfuz8q1#
如果我了解你。。。
aelbi1ox2#
可能就是这样
uttx8gqw3#
您的查询只是返回正值的最大日期。这是一个简单的聚合查询:
但是,该描述暗示了一个累积总和,如下所示:
对于问题中的数据,这恰好返回相同的结果。然而,这似乎是你想要的。