簡體   English   中英

SQL中從去年月份到今年月份的數字總和

[英]Sum of numbers from previous year month until this years month in SQL

作為一個初學者,我很難在SQL Server 2008中編碼此特定方案

在此處輸入圖片說明

如您所見,例如2017年7月的SUM列等於以下內容:2016年8月至2016年12月+ 2017年7月1月至7月= 4625

同樣,2017年8月的SUM列等於以下內容:9月至2016年12月+ 2017年1月至1月= 4625

在此處輸入圖片說明

我如何才能每月自動執行此操作?

感謝您能提供的任何幫助。 嘗試在SQL Server 2008中對此進行編碼

使用此方法來查找當前月份的第一天:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM