[英]Sum of numbers from previous year month until this years month in SQL
使用此方法來查找當前月份的第一天:
select dateadd(month, datediff(month, 0, getdate()), 0)
我們可以對此進行擴展,以獲取一年前下個月的第一天,即11個月前。
select dateadd(month, datediff(month, 0, dateadd(month,-11,getdate())), 0)
然后,我們只需要在where子句中使用它來限制您的數據...
declare @startDate = (select dateadd(month, datediff(month, 0, dateadd(month,-11,getdate())), 0))
declare @endDate = getdate()
select sum(someColumn)
from someTable
where dateColumn between @startDate and @endDate
由於您沒有提供實際的數據集,而只是提供一些數據透視,因此我不確定您的列名和表名
這聽起來像您想要窗口功能。 假設您的數據已經按月匯總:
select t.*,
sum(numbers) over (order by yyyymm rows between 11 preceding and current row) as prev_12_sum
from t;
如果數據尚未匯總,您也可以將其group by
:
select year(date), month(date),
sum(sum(numbers)) over (order by year(date), month(date) rows between 11 preceding and current row) as prev_12_sum
from t
group by year(date), month(date)
order by min(date);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.