返回結果集分區內行的序列號,每個分區的第一行從 1 開始。
Transact-SQL 語法約定 [ http://msdn.microsoft.com/zh-cn/library/ms177563.aspx ]

- < partition_by_clause >
-
將 FROM [ http://msdn.microsoft.com/zh-cn/library/ms177634.aspx ] 子句生成的結果集劃入應用了 ROW_NUMBER 函數的分區。若要了解 PARTITION BY 語法,請參閱 OVER 子句 (Transact-SQL) [ http://msdn.microsoft.com/zh-cn/library/ms189461.aspx ] 。
- < order_by_clause >
-
確定將 ROW_NUMBER 值分配給分區中的行的順序。有關詳細信息,請參閱 ORDER BY 子句 (Transact-SQL) [ http://msdn.microsoft.com/zh-cn/library/ms188385.aspx ] 。當在排名函數中使用 <order_by_clause> 時,不能用整數表示列。

A. 返回銷售人員的行號
以下示例將根據年初至今的銷售額,返回
AdventureWorks
中銷售人員的
ROW_NUMBER
。
SELECT FirstName, LastName, ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number', SalesYTD, PostalCode FROM Sales.vSalesPerson WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;
B. 返回行的子集
以下示例將返回行號為
50
到
60
的行(包含這兩行),并按
OrderDate
進行排序。
USE AdventureWorks; GO WITH OrderedOrders AS ( SELECT SalesOrderID, OrderDate, ROW_NUMBER() OVER (ORDER BY OrderDate) AS 'RowNumber' FROM Sales.SalesOrderHeader ) SELECT * FROM OrderedOrders WHERE RowNumber BETWEEN 50 AND 60;
C. 將 ROW_NUMBER () 與 PARTITION 一起使用
以下示例顯示了將
ROW_NUMBER
函數與
PARTITION BY
參數結合使用的情況。
SELECT FirstName, LastName, ROW_NUMBER() OVER(PARTITION BY PostalCode ORDER BY SalesYTD DESC) AS 'Row Number', SalesYTD, PostalCode FROM Sales.vSalesPerson WHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;

參考
RANK (Transact-SQL) [ http://msdn.microsoft.com/zh-cn/library/ms176102.aspx ]DENSE_RANK (Transact-SQL) [ http://msdn.microsoft.com/zh-cn/library/ms173825.aspx ]
NTILE (Transact-SQL) [ http://msdn.microsoft.com/zh-cn/library/ms175126.aspx ]
排名函數 (Transact-SQL) [ http://msdn.microsoft.com/zh-cn/library/ms189798.aspx ]
Functions (Transact-SQL) [ http://msdn.microsoft.com/zh-cn/library/ms174318.aspx ]
幫助和信息
獲取 SQL Server 2008 幫助 [ http://msdn.microsoft.com/zh-cn/library/ms166016.aspx ]
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
