- 2017.11.09.
- 5 perc olvasási idő
-
- j
- c
- M
- m
- M
-
+8
A következőre vonatkozik: SQL Server (az összes támogatott verzió) Azure SQL Database Azure SQL Managed példány Azure Synapse Analytics Párhuzamos adattárház
Számozza az eredménykészlet kimenetét. Pontosabban, egy eredménysorozat partícióján belül egy sor sorszámát adja vissza, az egyes partíciók első sorának 1-től kezdődően.
Megjegyzés
ROW_NUMBER
a lekérdezés futtatásakor kiszámított ideiglenes érték. A számok táblában való megőrzéséhez lásd: AZONOSSÁG Tulajdonság és SZekvencia.
Transact-SQL szintaxis konvenciók
Szintaxis
Megjegyzés
Az SQL Server 2014 és korábbi verzióinak Transact-SQL szintaxisának megtekintéséhez lásd a Korábbi verziók dokumentációját.
Argumentumok
PARTITION BY value_expression
A FROM záradék által létrehozott eredményhalmazokat felosztja olyan partíciókra, amelyekre a ROW_NUMBER függvényt alkalmazzák. Az érték_kifejezés azt az oszlopot adja meg, amelyen az eredménykészlet fel van osztva. Ha a PARTITION BY
nincs megadva, a függvény a lekérdezés eredményhalmazának minden sorát egyetlen csoportként kezeli. További információ: OVER záradék (Transact-SQL).
order_by_clause
A ORDER BY
záradék határozza meg azt a sorrendet, amelyben a sorok egyedi ROW_NUMBER
egy megadott partíción belül. Szükség van rá. További információ: OVER záradék (Transact-SQL).
Visszatérési típusok
bigint
Általános megjegyzések
Nincs garancia hogy a lekérdezés által a ROW_NUMBER()
használatával visszaadott sorok pontosan ugyanolyan sorrendbe kerülnek minden végrehajtásnál, kivéve, ha a következő feltételek teljesülnek.
-
Értékek a particionált oszlop egyediek.
-
A
ORDER BY
oszlopok értékei egyediek. -
A partíció oszlop és a
ORDER BY
oszlopok kombinációi egyediek.
ROW_NUMBER()
nem meghatározható. További információ: Determinisztikus és Nondeterminisztikus függvények.
Példák
A. Egyszerű példák
A következő lekérdezés a négy rendszertáblát ábécé sorrendben adja vissza.
Itt található az eredménykészlet.
név | recovery_model_desc |
---|---|
master | EGYSZERŰ |
modell | TELJES |
msdb | EGYSZERŰ |
tempdb | EGYSZERŰ |
Sorszám oszlop hozzáadása mindegyik előtt sorban adjon hozzá egy oszlopot a ROW_NUMBER
függvénnyel, ebben az esetben Row#
névvel. Át kell helyeznie a ORDER BY
záradékot a OVER
záradékra.
Itt található az eredménykészlet.
#. sor | név | helyreállítás_model_desc |
---|---|---|
1 | master | EGYSZERŰ |
2 | modell | TELJES |
3 | msdb | EGYSZERŰ |
4 | tempdb | EGYSZERŰ |
iv id = hozzáadása A recovery_model_desc
oszlopban található “2638b72db3″>
záradék a recovery_model_desc
érték változásakor újraindítja a számozást.
Itt található az eredménykészlet.
#. sor | név | helyreállítás_model_desc |
---|---|---|
1 | modell | TELJES |
1 | mester | EGYSZERŰ |
2 | msdb | EGYSZERŰ |
3 | tempdb | EGYSZERŰ |
B. A sorszám visszaküldése az értékesítők számára
Az alábbi példa egy sorszámot számol ki az Adventure Works Cycles eladók számára az évről-napra érvényes értékesítési rangsor alapján.
Itt található az eredménykészlet .
C.Sorok részhalmazának visszaadása
Az alábbi példa a SalesOrderHeader
táblázat összes sorának sorszámát kiszámítja a OrderDate
és csak a 50
sorokat adja vissza 60
befogadóvá.
D. A ROW_NUMBER () használata a PARTITION
használatával A következő példa a PARTITION BY
argumentummal ossza fel az TerritoryName
. A ORDER BY
záradék, amelyet a OVER
záradékban megadott, az egyes partíciók sorait a SalesYTD
. A ORDER BY
záradék a SELECT
utasításban megrendeli a teljes lekérdezés eredményét, amelyet TerritoryName
. / p>
Itt található az eredménykészlet.
Példák: Azure Synapse Analytics és Párhuzamos adattárház
E. Az értékesítők sorszámának visszaadása
Az alábbi példa a ROW_NUMBER
-t adja vissza az értékesítési képviselők számára a hozzájuk rendelt értékesítési kvóta alapján.
Itt van egy részleges eredménykészlet.
F. A ROW_NUMBER () használata a PARTITION
segítségével Az alábbi példa a ROW_NUMBER
függvény használatát mutatja a PARTITION BY
argumentummal. Ennek hatására a ROW_NUMBER
függvény megszámolja az egyes partíciók sorait.
Itt van egy részleges eredménykészlet.
Lásd még:
RANK (Transact-SQL)
DENSE_RANK (Transact-SQL)
NTILE (Transact-SQL)