新人请教:SQL语句如何实现

[复制链接]
查看11 | 回复1 | 2005-10-3 08:33:00 | 显示全部楼层 |阅读模式
请教SQL语句如何实现

表1
name
sid
aaa
aaa
aaa
aab
aab
aac
aag
aag
aag

表1
name sid
aaa
1
aaa
2
aaa
3
aab
1
aab
2
aac
1
aag
1
aag
2
aag
3
回复

使用道具 举报

千问 | 2005-10-3 08:33:00 | 显示全部楼层
drop table ar1
drop table ar2
/*建表 ar1*/
CREATE TABLE [dbo].[ar1] (

[name1] [varchar] (32) COLLATE Chinese_PRC_CI_AS NOT NULL ,

[id1] [int]
) ON [PRIMARY]
GO
/*插入数据*/
INSERT INTO ar1(name1,id1) VALUES('ccc',0)
INSERT INTO ar1(name1,id1) VALUES('aaa',0)
INSERT INTO ar1(name1,id1) VALUES('fff',0)
INSERT INTO ar1(name1,id1) VALUES('aaa',0)
INSERT INTO ar1(name1,id1) VALUES('aaa',0)
INSERT INTO ar1(name1,id1) VALUES('bbb',0)
INSERT INTO ar1(name1,id1) VALUES('eee',0)
INSERT INTO ar1(name1,id1) VALUES('fff',0)
INSERT INTO ar1(name1,id1) VALUES('ccc',0)
INSERT INTO ar1(name1,id1) VALUES('bbb',0)
INSERT INTO ar1(name1,id1) VALUES('ccc',0)
INSERT INTO ar1(name1,id1) VALUES('aaa',0)
/*select * from ar1*/
/*排序输出*/
select name1,id1 into ar2 from ar1 order by name1
/*select * from ar2*/
/*声明变量*/
declare @nnnn1 varchar(32),@nnnn2 varchar(32),@ok1 int,@ok2 int
/*声明游标*/
declare rencursor for select name1,id1 from ar2
/*打开游标*/
open ren
/*提取第一行的数据*/
fetch next from ren
into @nnnn1,@ok1
update ar2 set id1=1 where current of ren
set @ok1=1
print @nnnn1
print @ok1
while @@fetch_status=0
begin
fetch next from ren
into @nnnn2,@ok2
if @@fetch_status=0
begin
if @nnnn1=@nnnn2

begin

set @ok1=@ok1+1

update ar2 set id1=@ok1 where current of ren

end

else

begin

update ar2 set id1=1 where current of ren

set @ok1=1

set @nnnn1=@nnnn2

end

end
end
/*关闭释放游标*/
close ren
deallocate ren

用游标实现功能
能否有其他不用游标好方法!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行