/************************************************************ * code formatted by setyg * time: 2014/7/29 10:04:44 ************************************************************/ create proc handleemailrepeat as declare email cursor for select e.email ,e.orderno ,e.trackingno from email20140725 as e where e.[status] = 0 order by e.email ,e.orderno ,e.trackingno begin declare @@email varchar(200) ,@firstemail varchar(200) ,@firstorderno varchar(300) ,@firsttrackingno varchar(300) ,@nextemail varchar(200) ,@@orderno varchar(300) ,@nextorderno varchar(50) ,@@trackingno varchar(300) ,@nexttrackingno varchar(50) begin open email; fetch next from email into @firstemail,@firstorderno, @firsttrackingno; fetch next from email into @nextemail,@nextorderno, @nexttrackingno; if @nextemail!=@firstemail begin insert into email20140725test ( email ,orderno ,trackingno ) values ( @firstemail ,@firstorderno ,@firsttrackingno ); set @@email = @nextemail; set @@orderno = @nextorderno; set @@trackingno = @nexttrackingno; end else begin set @@email = @nextemail; set @@orderno = @firstorderno+'、'+@nextorderno; set @@trackingno = @firsttrackingno+'、'+@nexttrackingno; end fetch next from email into @nextemail,@nextorderno,@nexttrackingno while @@fetch_status=0 begin if @nextemail=@@email begin if (@nextorderno!=@@orderno) set @@orderno = @@orderno+'、'+@nextorderno print 'orderno:'+@@orderno if (@@trackingno!=@nexttrackingno) set @@trackingno = @@trackingno+'、'+@nexttrackingno print 'trackingno:'+@@trackingno end else begin insert into email20140725test ( email ,orderno ,trackingno ) values ( @@email ,@@orderno ,@@trackingno ); set @@email = @nextemail; set @@orderno = @nextorderno; set @@trackingno = @nexttrackingno; end fetch next from email into @nextemail,@nextorderno, @nexttrackingno; end close email; --关闭游标 deallocate email; --释放游标 end end
Sql Server使用cursor处理重复数据过程详解
•
生活家
赞 (0)
什么是铝箔纸
上一篇
2022年3月21日 上午7:23
1990属马大运之年考试如何,属马人正月初五1990年运
下一篇
2022年3月21日 上午7:24