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