首页 > 解决方案 > 基于双字段标准的当前行余额

问题描述

如果我有这样的表:

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

我需要按类别添加数量字段,其中“总和”列为真,按“日期”字段排序。如何在 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:我寻找了一些类似的问题,但没有发现可以完全澄清我的疑问。

提前致谢!

标签: sqlsql-serversql-server-2017

解决方案


你想要累积总和:

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

推荐阅读