我正在使用SQL Server 2008,如何计算开启和关闭状态之间的时间?我有以下表(由timestamp
订购):计算开启和关闭状态行之间的时间SQL Server
ID | EQUIP_ID | TIMESTAMP | STATUS (1 on/0 off)
1 | 1 | 21/05/2012 13:00:00 | 1
3 | 1 | 21/05/2012 13:04:00 | 1
4 | 1 | 21/05/2012 13:05:00 | 0
6 | 1 | 21/05/2012 13:09:00 | 1
7 | 1 | 21/05/2012 13:10:00 | 1
9 | 1 | 21/05/2012 13:12:00 | 1
10 | 1 | 21/05/2012 13:13:00 | 0
10 | 1 | 21/05/2012 13:14:00 | 1
10 | 1 | 21/05/2012 13:15:00 | 0
我期待这样的结果:
EQUIP_ID | START | END | STATUS
1 | 21/05/2012 13:00:00 | 21/05/2012 13:05:00 | 1 (WORKING)
1 | 21/05/2012 13:05:00 | 21/05/2012 13:09:00 | 0 (STOPPED)
1 | 21/05/2012 13:09:00 | 21/05/2012 13:13:00 | 1
1 | 21/05/2012 13:13:00 | 21/05/2012 13:14:00 | 0
1 | 21/05/2012 13:14:00 | 21/05/2012 13:15:00 | 1
我已经试过了差距和岛屿的一些功能,但没有工作,我不知道我失踪了什么...
也许这个例子可以让你开始:http://stackoverflow.com/questions/4738587/select-rows-where-price-didnt-change – 2012-07-27 18:57:31
使用这个例子i'm不能得到正确的间隔前:第一工作行将返回结束时间13:04不是13:05 ... – wesley 2012-07-27 19:03:30