分組命名

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

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