如下表数据:Name为字段名
Name
aaa
aaa
aaa
bbb
bbb
ccc
ccc
ccc
ccc
要求通过sql语句实现下面的效果(分组分别改名):
Name
aaa1
aaa2
aaa3
bbb1
bbb2
ccc1
ccc2
ccc3
ccc4
回复人:fcuandy(边打魔兽边回贴) ( 五级(中级)) 信誉:100 2006-7-18 22:25:29 得分:10
?
表里面如果有标识列,比如 id int identity(1,1)
那么写法如下:
UPDATE a SET Name=Name + RTRIM
(
SELECT COUNT(1) FROM tb b WHERE a.Name=b.Name AND a.id>=b.id
)
FROM tb a
如果只有Name列
SELECT Name,IDENTITY(int) ID INTO #t FROM tb
TRUNCATE TABLE tb
INSERT tb
SELECT Name + RTRIM
(
SELECT COUNT(1) FROM tb b WHERE a.Name=b.Name AND a.id>=b.id
)
FROM tb a
DROP TABLE #t
Top
回复人:fcuandy(边打魔兽边回贴) ( 五级(中级)) 信誉:100 2006-7-18 22:25:46 得分:0
?
没测试,可能有手误
Top
回复人:liangpei2008(逍遥叹) ( 一星(中级)) 信誉:100 2006-7-18 22:32:30 得分:10
?
--试一下
Create Table t1 (Name Varchar(10))
Insert t1 Select 'aaa'
Union all Select 'aaa'
Union all Select 'aaa'
Union all Select 'bbb'
Union all Select 'bbb'
Union all Select 'ccc'
Union all Select 'ccc'
Union all Select 'ccc'
Union all Select 'ccc'
----------------
Select *,Identity(Int,1,1) As Id Into # From T1
--更新
Update A
Set Name=Name+Rtrim((Select Count(1) From # Where A.Name=Name And Id<=A.Id))
From # A
--结果
Select Name From #
Top
回复人:liangpei2008(逍遥叹) ( 一星(中级)) 信誉:100 2006-7-18 22:34:12 得分:0
?
fcuandy兄弟快!