我有以下從1至12月列:怎麼辦了一個月列SUM在過去的一年裏
Year - Jan - Feb - Mar - (etc.) - Dec
---- --- --- --- ---
2015 25 32 102 12
2016 30 40 50 60
如何有效地做求和過去的一年? 假設從GETDATE()開始,如果今天是18.07.2017,我希望從2016年7月18日起(2016年7月至2017年7月)收到SUM。
我不知道如何有效地做到這一點。
我有以下從1至12月列:怎麼辦了一個月列SUM在過去的一年裏
Year - Jan - Feb - Mar - (etc.) - Dec
---- --- --- --- ---
2015 25 32 102 12
2016 30 40 50 60
如何有效地做求和過去的一年? 假設從GETDATE()開始,如果今天是18.07.2017,我希望從2016年7月18日起(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());
完美的作品 –
有沒有辦法做到這一點不交應用? –
@JúliusMarko。 。 。可能,但這會導致最簡單的查詢。 –
但是你沒有天級粒度數據在這裏,所以你能找到個月的水平和 –