【发布时间】:2020-02-06 18:16:31
【问题描述】:
我需要计算过去 12 个月内某个值的累积总和。到目前为止,我的累积计算是有效的,但从当月开始。
我需要从上个月开始的过去 12 个月的总数。
目前,我在 SQL 上使用OVER 子句,从当前行/月开始运行累计总数。
请参考下面我的代码示例:
SELECT *,
SUM(Amount) OVER (PARTITION BY ID ORDER BY Date_Month ROWS BETWEEN 11 PRECEDING AND CURRENT ROW) AS TwelveMoTtl
FROM (
SELECT DISTINCT
CAST(DATEADD(MONTH, DATEDIFF(MONTH, 0, TransactionDt), 0) AS DATE) AS Date_Month,
ID,
SUM(Amount) AS Amount
FROM MyTable
WHERE TransactionDt >= '2019-01-01'
GROUP BY
ID,
CAST(DATEADD(MONTH, DATEDIFF(MONTH, 0, TransactionDt), 0) AS DATE)
这是我的结果(仅使用一个 ID 来简化示例):
作为我的示例,计算从当前行开始,并在过去 12 个月内运行。
如果我们以二月行为例,我需要从 2020 年 1 月到 2019 年 2 月的累计总和。
有什么建议吗?
谢谢,
【问题讨论】:
-
如
ROWS BETWEEN 12 PRECEDING AND 1 PRECEDING?
标签: sql sql-server