文章編號: 186133 - 上次校閱: 2006年2月14日 - 版次: 5.4 如何動態地 SELECT Transact-SQL 陳述式中編號的資料列
在此頁中結論本文將告訴您,如何利用有彈性的方法,這可能只可能的解決方案,而何者為程序性解決方案比快執行 SELECT 陳述式時,動態排名資料列。資料列編號或分級是典型的程序性問題。該解決方案通常根據迴圈和暫存資料表 ; 因此,它們根據 SQL Server 迴圈和游標。這項技術根據自動聯結。選擇的關聯通常是 「 是大於 」。Count 多少次特定的資料集的每個項目滿足關聯性 「 大於 」 何時集合相較於本身。 附註下列範例根據 pubs 資料庫。預設情況下,北風貿易 範例資料庫和 pubs 範例資料庫未安裝 SQL Server 2005 中。可從 Microsoft 下載中心 」 下載這些資料庫。如需詳細資訊請造訪下列 Microsoft 網站]: http://go.microsoft.com/fwlink/?linkid=30196
(http://go.microsoft.com/fwlink/?linkid=30196)
下載 SQL2000SampleDb.msi 之後請連按兩下 SQL2000SampleDb.msi 解壓縮範例資料庫指令碼。預設情況下,SQL2000SampleDb.msi 會展開資料庫指令碼和讀我檔案到下列資料夾:C:\SQL Server 2000 樣本資料庫 依照指示讀我檔案中的執行安裝指令碼。 如果您使用的 SQL Server 2005我們建議您為 SQL Server 2005 中的新功能使用所提供的排名函式。如需有關排名函式的詳細資訊,請造訪下列 Microsoft 開發 o 人 h 員 ? 工 u 具 ? 網路 (MSDN) 網站]:http://msdn2.microsoft.com/en-us/library/ms189798.aspx
(http://msdn2.microsoft.com/en-us/library/ms189798.aspx)
範例 1在這個範例中:
Rank Au_Lname Au_Fname
---- -------------- -----------
1 Bennet Abraham
2 Blotchet-Halls Reginald
3 Carson Cheryl
4 DeFrance Michel
5 del Castillo Innes
6 Dull Ann
7 Greene Morningstar
8 Green Marjorie
9 Gringlesby Burt
10 Hunter Sheryl
11 Karsen Livia
12 Locksley Charlene
13 MacFeather Stearns
14 McBadden Heather
15 O'Leary Michael
16 Panteley Sylvia
17 Ringer Albert
18 Ringer Anne
19 Smith Meander
20 Straight Dean
21 Stringer Dirk
22 White Johnson
23 Yokomoto Akiko
(23 row(s) affected)
範例 2在這個範例中:
Rank Stor_Id Qty ---- ------- --- 1 6380 8 2 7896 120 3 8042 240 4 7067 360 5 7066 625 6 7131 780 (6 row(s) affected) 在 SQL Server 2005 中使用下列程式碼 rank stor_id qty ------- ------- ------ 1 7131 130 2 7066 125 3 7067 90 4 8042 80 5 7896 60 6 6380 8 (6 row(s) affected) 範例 3在這個範例中:
Rank Pub_Id Sales ---- ------ -------- 1 0736 1,961.85 2 0877 4,256.20 3 1389 7,760.85 (3 row(s) affected) 在 SQL Server 2005 中使用下列程式碼。 rank pub_id sales ------- ------ --------- 1 1389 2586.95 2 0877 2128.10 3 0736 1961.85 (3 row(s) affected) 缺點
Rank Title_Id Qty ---- -------- ---- 1 MC2222 10 4 BU1032 60 4 BU7832 60 4 PS3333 60 7 PS1372 140 7 TC4203 140 7 TC7777 140 10 BU1111 250 10 PS2106 250 10 PS7777 250 11 PC1035 330 12 BU2075 420 14 MC3021 560 14 TC3218 560 15 PC8888 750 16 PS2091 1728 (16 row(s) affected) 好處
Publisher Earnings
------------- --------
0736 : 1,961.85
0877 : 4,256.20
1389 : 7,760.85
publisher earnings
-------------------- ---------------------
0736 : 1961.85
0877 : 2128.10
1389 : 2586.95
(3 row(s) affected)範例 2:
Book Qty
------------------------------------------- ----
MC2222 : 10
BU1032 : 60
BU7832 : 60
PS3333 : 60
PS1372 : 140
TC4203 : 140
TC7777 : 140
BU1111 : 250
PS2106 : 250
PS7777 : 250
PC1035 : 330
BU2075 : 420
MC3021 : 560
TC3218 : 560
PC8888 : 750
PS2091 : 1728
(16 row(s) affected)
Book qty
--------------------------------------------- -----------
MC2222 : 10
BU1032 : 15
BU7832 : 15
PS3333 : 15
TC4203 : 20
TC7777 : 20
PS1372 : 20
BU1111 : 25
PS7777 : 25
PS2106 : 25
PC1035 : 30
BU2075 : 35
MC3021 : 40
TC3218 : 40
PC8888 : 50
PS2091 : 108
(16 row(s) affected)
這篇文章中的資訊適用於:
機器翻譯重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。 按一下這裡查看此文章的英文版本:186133?
(http://support.microsoft.com/kb/186133/en-us/
)
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。 | 其他資源 其他支援網站社群立即取得協助文章翻譯
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


回此頁最上方
