如何用游标的方法或其它更好的方法实现,表中前后记录的对比

foxconn80 2003-10-13 09:54:14
有一个表

产品名称 开始号码 结束号码 开始断号 结束断号
CPMC KSHM JSHM KSDH JSDH
-----------------------------------------------
A 1 500
A 550 600
A 600 700
A 730 800

我想请教一下各位,如何通过游标,或者其它更好的方法,实现:
下一条记录和上一条记录做比较,例如此表中的第二条记录的KSHM和
第一条JSHM做比较,得出中间有50的差距,然后把中间断号的开始数,和结束数
分别填到第二条数据中。
如果中间没有差距的话,例如第三条和第二条的比较。那么后面的开始断号
和结束断号就可以不填。
执行结果为:
CPMC KSHM JSHM KSDH JSDH
-----------------------------------------------
A 1 500
A 550 600 500 550
A 600 700
A 730 800 700 730
...全文
43 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
txlicenhe 2003-10-13
  • 打赏
  • 举报
回复
同意楼上
CrazyFor 2003-10-13
  • 打赏
  • 举报
回复
declare @lastJshm int
set @lastjshm=1
update 表 set
ksdh=case when kshm=@lastjshm then ksdh=NULL else @lastjshm end
,jsdh=case when kshm=@lastjshm then jsdh=Null else Kshm end
,@lastjshm=JSHM
zjcxc 元老 2003-10-13
  • 打赏
  • 举报
回复
用游标的速度太慢,直接用:

declare @KSHM int,@JSHM int
update 表 set @jshm=case when @kshm<>KSHM then @kshm else null end
,@kshm=jshm
,KSDH=@jshm
,jsdh=case when @jshm is not null then kshm else null end
pengdali 2003-10-13
  • 打赏
  • 举报
回复
create table 你的表(CPMC varchar(10),KSHM int,JSHM int, KSDH int, JSDH int)
insert 你的表 values('A', 1 ,500,null,null)
insert 你的表 values('A' , 550 , 600,null,null)
insert 你的表 values('A' , 600 , 700,null,null)
insert 你的表 values('A' , 730 , 800,null,null)


declare @a int,@b int
update 你的表 set @b=case when @a<>KSHM then @a else null end,@a=jshm,KSDH=@b,jsdh=case when @b is not null then kshm else null end


select * from 你的表


go
drop table 你的表
pengdali 2003-10-13
  • 打赏
  • 举报
回复
create table 你的表(CPMC varchar(10),KSHM int,JSHM int, KSDH int, JSDH int)
insert 你的表 values('A', 1 ,500,null,null)
insert 你的表 values('A' , 550 , 600,null,null)
insert 你的表 values('A' , 600 , 700,null,null)
insert 你的表 values('A' , 730 , 800,null,null)

declare @a int,@b int
set @a=null
update 你的表 set @b=case when @a<>KSHM then @a else null end,@a=jshm,KSDH=@b,jsdh=case when @b is not null then kshm else null end


select * from 你的表


go
drop table 你的表

34,874

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧