只是尝试使用窗口函数对一个月进行累积求和,如下所示。
sum(MeterReading) over (partition by Serial, code order by month(MeterReadingDate)) as cumulative
这似乎是缓慢运行的方式,并且在等待后没有带来任何结果,是否有什么我做错了?
基本上我想查看每个序列/代码的每个月的总和。
答案 0 :(得分:0)
sum(MeterReading) over (partition by Serial, code, DATEADD(MONTH, DATEDIFF(MONTH, 0, MeterReadingDate), 0) order by MeterReadingDate) as cumulative
DATEADD和DATEDIFF的函数将日期转换为该月的第一天。 然后我将此函数添加到PARTITION以按Serial,Code和Month分组。
答案 1 :(得分:0)
Select
serial,
code,
DATEPART(YEAR,MeterReadingDate) as Year,
DATEPART(MONTH,MeterReadingDate) as Month,
sum(MeterReading) over (
partition by
Serial,
code,
Datepart(YEAR,MeterReadingDate),
Datepart(MONTH,MeterReadingDate)
) as cumulative
from table
首先通过claus对订单进行汇总是没有意义的,因为您想要将所有结果一起添加一个月。
其次,添加年份和月份的两个日期部分将对您的数据进行分区,以便总和仅添加一个月的仪表读数。
如果您有兴趣查看每月的年度变化,那么您可以删除Datepart(YEAR,...)并添加一些平均值。