【发布时间】:2015-12-01 13:28:26
【问题描述】:
我已经得到了下一个数据Id,接收和余额
现在我需要计算每个时间段的最后一列,所以最后一列应该是接下来五秒内余额列的最后一个值。
Id Received Balance LastPerFiveSeconds
171 2015-11-25 10:05:50.630 13548830.86000000 15026517.59000000
172 2015-11-25 10:05:50.760 13590759.43000000 15026517.59000000
173 2015-11-25 10:05:50.790 13632688.00000000 15026517.59000000
174 2015-11-25 10:05:50.850 13662038.00000000 15026517.59000000
175 2015-11-25 10:05:50.910 13687195.15000000 15026517.59000000
176 2015-11-25 10:05:50.940 13703966.58000000 15026517.59000000
177 2015-11-25 10:05:50.950 13720738.01000000 15026517.59000000
178 2015-11-25 10:05:50.990 13762666.59000000 15026517.59000000
179 2015-11-25 10:05:51.060 13787823.73000000 15026517.68000000
180 2015-11-25 10:05:51.200 14987823.73000000 15026517.68000000
181 2015-11-25 10:05:51.360 15026517.68000000 15026517.68000000
182 2015-11-25 10:05:56.630 15034903.39000000 15034903.39000000
查询看起来像这样
SELECT id, Received, Balance, LAST_VALUE(Balance) OVER (PARTITION BY DATEADD(S, 5, [Received]) ORDER BY Received RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
FROM Data
【问题讨论】:
-
您的问题是什么?请把你的“得到”和“需要”分开。
-
你的意思是 5 秒而不是 5 分钟?
-
这个问题没有显示任何研究工作。
-
我需要使用 Received 作为时间窗口从余额中计算 LastPerFiveMinute
-
@TabAlleman 我正在使用 LAST_VALUE(Balance) OVER (ORDER BY Received RANGE BETWEEN UNBOUNDED PRECEDING 和 UNBOUNDED FOLLOWING) 但无法控制当时的名声
标签: sql-server sql-server-2012 window-functions