分组命名

如下表数据: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兄弟快! 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章