如何在过去一年中使用SUM过月列

时间:2017-07-18 12:02:15

标签: sql sql-server database tsql calculated-columns

我从1月到12月有以下专栏:

Year - Jan - Feb - Mar - (etc.) - Dec
----   ---   ---   ---            ---
2015   25    32    102            12
2016   30    40    50             60

过去一年如何有效地做SUM? 让我们来自GETDATE(),如果今天是18.07.2017,我想从2016年7月18日(2016年7月到2017年7月)获得SUM。

我不知道如何有效地做到这一点。

1 个答案:

答案 0 :(得分:1)

取消数据,然后进行计算:

select sum(val)
from t cross apply
     (values (t.year, t.Jan, 1),
             (t.year, t.Feb, 2),
             . . .
     ) v(yyyy, val, mon)
where yyyy * 100 + mon >= (year(getdate()) - 1) * 100 + month(getdate());