在 SQL 服务器中计算五年前的总和

Calculate sum to five years back in SQL Server

我正在使用 select:

Select year, month, par1, par2, par3, value 
from table1

制作这个 table:

现在,我想计算 sum contains 到五年前(即 60 个月)。

结果应该如下:

我该怎么做?

对于你的情况,因为表格是字符串形式的,所以我使用 CTE 为所需的计算制定日期列

; with
cte as
(
    select  *, date = convert(date, year + '-' + substring(month, 2, 2) + '-01', 121)
    from    table1
)
select  *
from    cte c
    outer apply
    (
        select  SumOfValue = sum(Value)
        from    cte x
        where   x.date  >= dateadd(month, -60, c.date)
        and x.date  <= c.date
    ) t

如果您需要 sum() 按其他列分组,请将条件添加到 OUTER APPLY 查询

编辑 1:

select  *
from    cte c
    outer apply
    (
        select  SumOfValue = sum(x.Value)
        from    cte x
        where   x.date  >= dateadd(month, -60, c.date)
        and     x.parameter1 = c.parameter1
        and     x.parameter2 = c.parameter2
        and     x.date      <= c.date
    ) t