我有下表
icode iname icatcode slno
10 a 11 0
20 b 31 0
30 c 11 0
40 d 21 0
50 e 31 0
60 f 11 0
70 g 21 0
80 h 41 0
我需要使用cursor更新slno
列。
输出应该是下表,即当icatcode
相同时,它应该增加slno
&如果icatcode
更改,则应将slno
设置为1
icode iname icatcode slno
10 a 11 1
30 b 11 2
60 c 11 3
70 d 21 1
40 e 21 2
50 f 31 1
20 g 31 2
80 h 41 1
我已经为它编写了查询
declare @icode int,@iccode int, @islno int,@inccode int
set @islno=1
declare cur2 cursor for select icode,iccode from im
order by iccode
open cur2
fetch next from cur2 into @icode,@iccode
while @@FETCH_STATUS=0
begin
update im set slno=@islno where @icode=icode
fetch next from cur2 into @icode,@inccode
if @iccode<>@inccode
begin
set @islno=1
end
else
begin
set @islno=@islno+
end
end
close cur2
deallocate cur2
以上查询会产生以下输出
icode iname icatcode slno
10 a 11 1
20 b 31 1
30 c 11 2
40 d 21 1
50 e 31 1
60 f 11 3
70 g 21 1
80 h 41 1
我需要进行哪些更改才能获得所需的输出?
注意:我们应该只使用sql 2008中的“CURSORS”来解决这个问题