sql sum-按日期时间分组

nnt7mjpx  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(362)

我正在寻找一个sql查询的解决方案,它可以按nr分组,按值求和,但只保留值为正值的日期(对于相同的nr,只有1个为正,其余为负)。

SELECT
  NR,
  SUM(VALUE),
  DATE (MUST BE THE DATE WHERE VALUE IS POSITIVE)
FROM TABLE
GROUP BY NR

预期结果

如果有人能解决这个问题,请帮忙。谢谢您。

wgmfuz8q

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]
aelbi1ox

aelbi1ox2#

可能就是这样

SELECT
  NR,
  SUM(VALUE),
  CASE
    WHEN VALUE > 0 THEN DATE
    ELSE ''
  END
FROM
(
  SELECT * FROM tablename ORDER BY VALUE DESC
)
GROUP BY NR
uttx8gqw

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;

对于问题中的数据,这恰好返回相同的结果。然而,这似乎是你想要的。

相关问题