我有一个具有以下结构的表
ID ActivityTime Status
19 2013-08-23 14:52 1
19 2013-08-23 14:50 1
19 2013-08-23 14:45 2
19 2013-08-23 14:35 2
19 2013-08-23 14:32 1
19 2013-08-23 14:30 1
19 2013-08-23 14:25 2
19 2013-08-23 14:22 2
53 2013-08-23 14:59 1
53 2013-08-23 14:56 1
53 2013-08-23 14:57 1
53 2013-08-23 14:52 2
53 2013-08-23 14:50 2
53 2013-08-23 14:49 2
53 2013-08-23 14:18 2
53 2013-08-23 14:30 1
我想计算每个 ID 与状态 2 的总时间差。例如,ID 19 从 14:35 到 14:50(15 分钟)停留在状态 2,然后是 14:22 到 14:30(8 分钟)。所以 ID 19 停留在状态 2 的总时间是 23 分钟。(在这两种情况下,我都考虑了状态 2 到状态 1 的最短时间) 问题是 我如何只包括下一行不同的 Status 之间的差异。
例如,我将排除表中状态为 1 的第一条记录并选择第二行。状态 2 的情况也是如此。我会选择最短时间,计算它们的差异,然后将它们加起来以针对每个通道的多组状态。
我曾尝试使用 CURSOR 但似乎无法使其工作。我也非常有信心,在获取所有数据然后循环遍历它之后,我可以在 C# 中实现这一点。但我只是想知道是否有一种无需循环即可直接获取信息的方法。我还用数据创建了一个SQL 小提琴 ,但我似乎无法让它工作。我来自 C# 背景,具有基本的 SQL 知识。如果有人可以帮助我,我会很高兴。