SQL - 使用 ROW_NUMBER 來實現群組編排序號

摘要:SQL - 使用 ROW_NUMBER 來實現群組編排序號

今天同事問我一個問題,要如何使用 T-SQL 做到以下的呈現:

序號 文字
1 A
2 A
3 A
1 B
2 B
3 B
1 C
2 C
3 C

印象當中,這種呈現方式在 Reporting Service 中到是滿常見到的,T-SQL 嘛,我到是不常遇到,可能我比較沒福份遇到這方面的需求,之後查了一下 MSDN 後,果然豁然開朗。

範例:

DECLARE @table table(gName char(2));

Insert into @table Values('A')
Insert into @table Values('A')
Insert into @table Values('A')
Insert into @table Values('B')
Insert into @table Values('B')
Insert into @table Values('B')
Insert into @table Values('C')
Insert into @table Values('C')
Insert into @table Values('C')

Select ROW_NUMBER() OVER(PARTITION BY gName ORDER BY gName DESC) AS 'Row Number',
gName
From @table

結果:


滿簡單的,詳細的說明,可以參閱 MSDN 的網站。

參考:ROW_NUMBER (Transact-SQL)