ROW_NUMBER (Transact-SQL)
Zwraca numer kolejny wiersz w partycji zestaw wyników, począwszy od 1 dla pierwszego wiersza w każdej partycji.
Składnia
ROW_NUMBER ( ) OVER ( [ <partition_by_clause> ] <order_by_clause> )
Argumenty
<partition_by_clause>
Dzieli zestaw wyników produkowanych przez FROM klauzula do partycji stosowane jest Numer_wiersza funkcja .Zobacz składnię PARTYCJI przez Klauzula OVER (Transact-SQL).<order_by_clause>
Określa kolejność, w której wartość Numer_wiersza jest przypisywana do wierszy w partycji.Aby uzyskać więcej informacji, zobacz Klauzula ORDER BY (Transact-SQL).Liczba całkowita nie może reprezentować kolumna po <order_by_clause> używane w rankingu funkcja.
Zwracane typy
bigint
Uwagi
ORDER BY klauzula zależy od kolejności, w którym wiersze są przypisane ich unikatowych Numer_wiersza w określonej partycji.
Przykłady
A.Zwraca numer wiersza dla sprzedawców
Poniższy przykład zwraca ROW_NUMBER dla sprzedawców w AdventureWorks2008R2 na podstawie roku-do-data sprzedaży.
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.Zwracanie podzbiór wierszy
Poniższy przykład zwraca wierszy za pomocą liczb 50 do 60 włącznie w kolejności od OrderDate.
USE AdventureWorks2008R2;
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.PARTYCJI przy użyciu ROW_NUMBER()
W poniższym przykładzie za pomocą ROW_NUMBER funkcja z PARTITION BY argumentu.
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;