我需要一个查询来找出两个日期与状态条件之间的差异,
我的表数据是这样的:
select
ROW_NUMBER() OVER (ORDER BY eventtime) as id,
Eventcode, eventtime, status
from cfw.dbo.DCTBLEVENTINFO
where
MeterID = 4722
and EventTime >= '2011-10-21' and EventCode = 13
数据:
id Eventcode eventtime status
1 13 2011-10-21 21:42:00.000 1
2 13 2011-10-21 22:02:24.107 0
3 13 2011-10-22 09:45:00.000 1
4 13 2011-10-22 10:05:24.107 0
5 13 2011-10-22 15:08:00.000 0
6 13 2011-10-22 16:33:00.000 1
7 13 2011-10-22 16:44:00.000 0
8 13 2011-10-22 16:53:24.107 0
9 13 2011-10-23 08:52:00.000 1
10 13 2011-10-23 09:12:24.107 0
11 13 2011-10-23 10:18:00.000 0
12 13 2011-10-23 10:35:00.000 1
13 13 2011-10-23 10:36:00.000 0
14 13 2011-10-23 10:55:24.107 0
15 13 2011-10-23 10:56:00.000 1
16 13 2011-10-23 11:01:00.000 0
17 13 2011-10-23 11:16:24.107 0
18 13 2011-10-23 18:28:00.000 1
19 13 2011-10-23 18:30:00.000 0
在此状态列 中, 1指的是occurencetime
,0指的是restorationtime
。我必须取第一个发生时间和下一个相应的恢复时间之间的差异,然后取下一个发生时间
例如
对于2011-10-22 的日期,总共有 5个条目,我必须接受occurencetime
as2011-10-22 09:45:00.000
和restoration time
as2011-10-22 10:05:24.107
并有所作为。下一个条目有restorationtime alone(status 0)
我必须离开那个条目并搜索下一个 1 和 0 条目。然后有所作为。
我的最终结果集是这样的:
Eventcode occurencetime restorationtime difference (sec)
13 2011-10-21 21:42:00.000 2011-10-21 22:02:24.107 1224
13 2011-10-22 09:45:00.000 2011-10-22 10:05:24.107 1224
13 2011-10-22 16:33:00.000 2011-10-22 16:44:00.000 660
帮助我做到这一点。