我从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。
我不知道如何有效地做到这一点。
答案 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());