【发布时间】:2012-08-21 08:40:13
【问题描述】:
我需要一个查询来找出两个日期之间的差异,
我的表格数据是这样的:
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 作为 2011-10-22 09:45:00.000 和 restoration time 作为 2011-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
帮我做。
【问题讨论】:
标签: sql-server sql-server-2008