- Step1: 首先得到每月的记录
- Step2: 然后进行Sum up
Step1: 首先得到每月的记录
代码语言:javascript复制 WITH TABLE monthlydata AS
(
SELECT sum(xxx) AS totalcases,
id,
month(date) AS [month]
FROM yourtable
GROUP BY id,
month(date)
)
Step2: 然后进行 Sum up
对上方表进行操作:
- 若部分 month 的没有产值而显示为 0 的话
- 不需要额外操作
- 若部分 month 的没有产值而显示为 NULL 的话
- 进行一下判断将其变为 0
- 若部分 month 的没有产值导致上方表结果中只有一年中部分月份的数据
- 额外 JOIN 一张表变量,这张表有 12 行数据分别是 1-12
declare @monthIndex as table
(
[month] INT
)
DECLARE @hid INT;
SET @hid=1;
WHILE @hid <= 12
BEGIN
INSERT INTO @monthIndex VALUES(@hid)
SET @hid = @hid 1;
END
然后进行判断
代码语言:javascript复制 select
i.siteid,
mindex.month,
sum(totalcases ) as SumUpRecCases
from MonthlyData, @monthIndex mindex
where i.month <= mindex.month
group by i.siteid, mindex.month
最终会显示多行
参考文献
generate-year-to-date-by-month-report-in-sql