如何对过去一年的月份列进行 SUM

How to do SUM over month columns in past year

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

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

过去一年如何有效地做SUM? 假设从 GETDATE() 开始,如果今天是 18.07.2017,我想要从 18.07.2016(从 2016 年 7 月到 2017 年 7 月)的 SUM。

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

逆透视数据然后进行计算:

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());