基于两字段标准的当前行余额

时间:2019-05-14 12:51:23

标签: sql sql-server sql-server-2017

如果我有一个这样的表:

DATE        CATEGORY    QTY      SUM
01/01/2019     B         2       true
02/01/2019     B         3       true
03/01/2019     A         1       false
04/01/2019     B         3       true
05/01/2019     A         3       true
06/01/2019     A         2       true

我需要按类别添加qty字段,其中“ sum”列为true,并按“ date”字段排序。如何在SQL Server中使用CTE获得以下结果

结果查询:

DATE        CATEGORY    QTY_TOTAL   SUM
01/01/2019     B           2        true
02/01/2019     B           5        true
03/01/2019     A           0        false
04/01/2019     B           8        true
05/01/2019     A           3        true
06/01/2019     A           5        true

PS:我一直在寻找类似的问题,但没有一个可以完全澄清我的疑问。

谢谢!

1 个答案:

答案 0 :(得分:1)

您要累计:

select t.*, sum(case when [sum] = 'true' then qty else 0 end) over (partition by category order by [date]) as QTY_TOTAL
from table t
order by [date];