【发布时间】:2019-07-03 14:34:42
【问题描述】:
我有一个用于记录事件的表。具体有两种类型:ON 和 OFF。
有时会有重叠的日志条目,因为可能有 2 个同时记录的设备。这并不重要,因为最终报告应该 [大部分] 正确地概述 ON -> OFF 时期。
下面是一个示例,第 3 列仅用于说明:它不存在。
ActionTaken ID ID_of_next_OFF
Switched ON 1 3
Switched ON 2 6
Switched OFF 3
Switched ON 4 7
Switched ON 5 8
Switched OFF 6
Switched OFF 7
Switched OFF 8
Switched On 9 10
Switched OFF 10
Switched On 11 12
Switched OFF 12
给定前两列,我如何计算第三列?
这不起作用:
SELECT actionTaken, Id, LEAD(Id)
OVER (PARTITION BY ActionTaken ORDER BY ID) nextConn
FROM dbo.Events
因为它将 ID_of_Next 基于下一个匹配的 actionTaken 值,而不是下一个替代值。
【问题讨论】:
标签: sql-server sql-server-2016 data-partitioning lead