Udostępnij za pośrednictwem


ROW_NUMBER (Transact-SQL)

Zwraca numer kolejny wiersz w partycji zestaw wyników, począwszy od 1 dla pierwszego wiersza w każdej partycji.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

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;