根据给出的示例,您似乎正在尝试获得滚动和的最大值。您可以很容易地计算15分钟滚动总和,如下所示:
SELECT [Time]
,[Value]
,SUM([Value]) OVER (ORDER BY [Time] ASC ROWS 14 PRECEDING) [RollingSum]
FROM #dataForPeak
注意,这里的关键是
ROWS 14 PRECEDING
陈述它有效地说明了SQL Server应该将前面的14条记录与当前记录相加,这将为您提供15分钟的时间间隔。
现在,您可以简单地最大化滚动和的结果。完整查询如下所示:
;WITH CTE_RollingSum
AS
(
SELECT [Time]
,[Value]
,SUM([Value]) OVER (ORDER BY [Time] ASC ROWS 14 PRECEDING) [RollingSum]
FROM #dataForPeak
)
SELECT MAX([RollingSum]) AS Peak
FROM CTE_RollingSum