小弟新手第一帖求一段SQL代码,好心请多多帮忙
有以下表
真实槽号 序列号 开始时间 结束时间 记录
101 123 5:00 NULL 1
101 124 6:00 NULL 1
101 125 NULL 7:00 0
101 126 NULL 7:50 0
101 127 NULL 7:55 0
102 128 NULL 7:58 1
……
……
如何做才能将多个个结束时间/开始时间 除最开始行之外的都删除,只保留一个开始和对应的结束时间
双游标 谢谢
下面自己写的程序无法搞定,不知道问题出在什么地方。
--下面要删除多余项,要每个开始时间只对应一个结束时间
--@X@Y变量用来存放开始和结束时间
Declare @X int
Declare @Y int
/*--故障类型
Declare @fault_type varchar(50)
--故障序列号
Declare @fault_rs int
--故障真实槽号
Declare @fault_real_no int
*/
--声明游标1
Declare #cur_1 cursor scroll
for select 变量
from Report
open #cur_1
FETCH first FROM #cur_1
INTO @X
--循环1
WHILE @@FETCH_STATUS=0
BEGIN
--声明游标2
Declare #cur_2 cursor scroll dynamic
for select 变量
from Report
open #cur_2
FETCH RELATIVE 1 FROM #cur_2
INTO @Y
--循环2
WHILE @@FETCH_STATUS=0
BEGIN
if @X=@Y
DELETE from Report WHERE CURRENT OF #cur_2
FETCH NEXT FROM #cur_2
INTO @Y
if @X!=@Y
break
END
--循环2结束
CLOSE #cur_2
DEALLOCATE #cur_2
FETCH next FROM #cur_1
INTO @X
END
--循环1结束
CLOSE #cur_1
DEALLOCATE #cur_1
------解决方案--------------------终于看明白了
DECLARE @DATA TABLE(真实槽号 INT, 序列号 INT, 开始时间 VARCHAR(10), 结束时间 VARCHAR(10