ROW_NUMBER (Transact-SQL)
Gibt die fortlaufende Nummer einer Zeile innerhalb einer Partition eines Resultsets zurück, beginnend mit 1 für die erste Zeile in jeder Partition.
A. Zurückgeben der Zeilennummer für Vertriebsmitarbeiter
Im folgenden Beispiel wird die ROW_NUMBER für die Vertriebsmitarbeiter in AdventureWorks basierend auf den Verkaufszahlen des laufenden Jahres zurückgegeben.
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. Zurückgeben einer Teilmenge von Zeilen
Im folgenden Beispiel werden Zeilen mit Zahlen zwischen 50 und 60 einschließlich in der Reihenfolge von OrderDate zurückgegeben.
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. Verwenden von ROW_NUMBER () mit PARTITION
Im folgenden Beispiel wird die Verwendung der ROW_NUMBER-Funktion mit dem PARTITION BY-Argument dargestellt.
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;
Community-Inhalt
Hinzufügen