SQL SERVER 中row_number用法

來源:互聯網
上載者:User

返回結果集分區內行的序號,每個分區的第一行從 1 開始。

Transact-SQL 文法約定

文法
 
ROW_NUMBER ( )     OVER ( [ <partition_by_clause> ] <order_by_clause> )
參數
< partition_by_clause>

將 FROM 子句產生的結果集劃入應用了 ROW_NUMBER 函數的分區。若要瞭解 PARTITION BY 文法,請參閱 OVER 子句 (Transact-SQL)。

< order_by_clause>

確定將 ROW_NUMBER 值分配給分區中的行的順序。有關詳細資料,請參閱 ORDER BY 子句 (Transact-SQL)。當在次序函數中使用 <order_by_clause> 時,不能用整數表示列。

傳回型別

bigint

備忘

ORDER BY 子句可確定在特定分區中為行分配唯一 ROW_NUMBER 的順序。

樣本A. 返回銷售人員的行號

以下樣本將根據年初至今的銷售額,返回 AdventureWorks 中銷售人員的 ROW_NUMBER

  複製代碼
SELECT FirstName, LastName, ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number', SalesYTD, PostalCode FROM Sales.vSalesPersonWHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;
B. 返回行的子集

以下樣本將返回行號為 5060 的行(包含這兩行),並按 OrderDate 進行排序。

  複製代碼
USE AdventureWorks;GOWITH 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.vSalesPersonWHERE TerritoryName IS NOT NULL AND SalesYTD <> 0;

 

更新學習:

http://topic.csdn.net/u/20111227/21/a978539d-6d3b-4751-9588-193f9fe6fe80.html?1801

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.