100分--如何剔除不合规律的行?
表结构如下:
online user time
0 f1 t1
1 f1 t2
0 f2 t3
1 f2 t4
0 f1 t5
0 f1 t6
1 f1 t7
1 f2 t8
0 f2 t9
1 f2 t10
1 f3 t11
0 f3 t12
1 f1 t13
1 f4 t14
1 f4 t15
0 f4 t16
1 f4 t17
说明:表按时间顺序排列,online中0表示上线,1表示下线,time是时间字段。对每个user,正常情况下是先记录上线后记录下线,表中有坏数据是只记录了上线而没有记录下线,或只记录了下线而没有上线。
现在的问题是如何选出正确的上线下线记录(不能删除原表数据)?
如上表,正确选择结果应为:
0 f1 t1
1 f1 t2
0 f2 t3
1 f2 t4
0 f1 t6
1 f1 t7
0 f2 t9
1 f2 t10
0 f4 t16
1 f4 t17
------解决方案----------------------f3两条数据因为按1,0排列,所以是坏记录
declare @t table (online int,[user] varchar(10),time varchar(10))
insert @t select 0, 'f1 ', 't01 '
union all select 1, 'f1 ', 't02 '
union all select 0, 'f2 ', 't03 '
union all select 1, 'f2 ', 't04 '
union all select 0,