总计 运行 sql

Sum running total in sql

我正在尝试将 运行 总计列插入 SQL 服务器 table 作为存储过程的一部分。我需要这个用于财务数据库,所以我正在处理账户和部门。例如,假设我有这个数据集:

Account |  Dept  |   Date     |   Value  | Running_Total
--------+--------+------------+----------+--------------
 5000   |  40    | 2018-02-01 |     10   |      15
 5000   |  40    | 2018-01-01 |     5    |      5
 4000   |  40    | 2018-02-01 |     10   |      30
 5000   |  30    | 2018-02-01 |     15   |      15
 4000   |  40    | 2017-12-01 |     20   |      20

Running_Total 列提供小于或等于每行日期值的历史日期总和。但是,帐户和部门必须匹配才能出现这种情况。

我可以通过使用

接近
SUM(Value) OVER (PARTITION BY Account, Dept, Date) 

但它不会返回并获取前几个月...

有什么想法吗?谢谢!

你很接近。你需要一个 order by:

Sum(Value) over (partition by Account, Dept order by Date)