ROW_NUMBER (Transact-SQL) (Magyar)

  • 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.

  1. Értékek a particionált oszlop egyediek.

  2. A ORDER BY oszlopok értékei egyediek.

  3. 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)

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük