- 11.11.2017
- 5 minuuttia aikaa lukea
-
- j
- c
- M
- m
- M
-
+8
Koskee: SQL Server (kaikki tuetut versiot) Azure SQL -tietokanta Azure SQL -hallittu ilmentymä Azure Synapse Analytics Rinnakkaistietovarasto
Numeroi tulosjoukon tuloksen. Palauttaa tarkemmin tulossarjan osion rivin sarjanumeron, joka alkaa kunkin osion ensimmäisen rivin kohdasta 1.
Huomaa
ROW_NUMBER
on väliaikainen arvo, joka lasketaan kyselyä suoritettaessa. Jos haluat säilyttää numerot taulukossa, katso IDENTITY-ominaisuus ja SEQUENCE.
Transact-SQL-syntaksin yleissopimukset
Syntaksi
Huomautus
Jos haluat tarkastella Transact-SQL-syntaksia SQL Server 2014: lle ja sitä vanhemmille, katso edellisten versioiden ohjeet.
Argumentit
PARTITION BY value_expression
Jakaa FROM-lauseen tuottaman tulosjoukon osioihin, joihin ROW_NUMBER-funktiota käytetään. arvo_lauseke määrittää sarakkeen, jolla tulosjoukko ositetaan. Jos PARTITION BY
ei määritetä, funktio käsittelee kyselyn tulosjoukon kaikkia rivejä yhtenä ryhmänä. Lisätietoja on ohjeaiheessa OVER-lause (Transact-SQL).
order_by_clause
Lauseke ORDER BY
määrittää jakson, jossa riveille on annettu yksilöllinen ROW_NUMBER
määritetyssä osiossa. On vaadittu. Lisätietoja on ohjeaiheessa OVER-lause (Transact-SQL).
Palautustyypit
bigint
Yleisiä huomautuksia
Ei takuuta
-kyselyn avulla palautetut rivit järjestetään täsmälleen samalla tavalla jokaisen suorituksen yhteydessä, elleivät seuraavat ehdot täyty.
-
Arvot jaetun sarakkeen sarakkeet ovat ainutlaatuisia.
-
ORDER BY
-sarakkeiden arvot ovat ainutlaatuisia. -
Osiosarakkeen ja
ORDER BY
-sarakkeiden arvoyhdistelmät ovat ainutlaatuisia.
ROW_NUMBER()
on epämääräinen. Lisätietoja on kohdassa Deterministiset ja epädeterministiset toiminnot.
Esimerkkejä
A. Yksinkertaisia esimerkkejä
Seuraava kysely palauttaa neljä järjestelmätaulukkoa aakkosjärjestyksessä.
Tässä on tulosjoukko.
nimi | recovery_model_desc |
---|---|
isäntä | YKSINKERTAINEN |
malli | TÄYDELLINEN |
msdb | YKSINKERTAINEN |
tempdb | YKSINKERTAINEN |
Rivinumerosarakkeen lisääminen jokaisen eteen Lisää riville sarake, jossa on funktio ROW_NUMBER
, tässä tapauksessa nimeltään Row#
. Sinun on siirrettävä lauseke ORDER BY
lausekkeeseen OVER
.
Tässä on tulosjoukko.
Rivi # | nimi | recovery_model_desc |
---|---|---|
1 | isäntä | YKSINKERTAINEN |
2 | malli | TÄYSI |
3 | msdb | YKSINKERTAINEN |
4 | tempdb | YKSINKERTAINEN |
PARTITION BY
-lauseke recovery_model_desc
-sarakkeessa aloittaa numeroinnin uudelleen, kun recovery_model_desc
-arvo muuttuu.
Tässä on tulosjoukko.
Rivi # | nimi | recovery_model_desc |
---|---|---|
1 | malli | TÄYDELLINEN |
1 | isäntä | YKSINKERTAINEN |
2 | msdb | YKSINKERTAINEN |
3 | tempdb | YKSINKERTAINEN |
B. Myyjien rivinumeron palauttaminen
Seuraava esimerkki laskee Adventure Works Cycles -myyjien rivinumeron heidän vuotuisen myyntijärjestyksensä perusteella.
Tässä on tulosjoukko .
C.Rivien osajoukon palauttaminen
Seuraava esimerkki laskee kaikkien rivien numerot SalesOrderHeader
-taulukossa OrderDate
ja palauttaa vain rivit 50
ryhmään 60
lukien.
D. ROW_NUMBER (): n käyttäminen osion kanssa
Seuraava esimerkki käyttää PARTITION BY
-argumenttia osion sarakkeen TerritoryName
. ORDER BY
-lauseke, joka on määritetty lausekkeessa OVER
, järjestää kunkin osion rivit sarakkeella SalesYTD
. ORDER BY
-lauseke SELECT
-lauseessa järjestää koko kyselyn tuloksen, jonka asettaa TerritoryName
.
Tässä on tulosjoukko.
Esimerkkejä: Azure Synapse Analytics ja Parallel Data Warehouse
E. Palautetaan myyjien rivinumero
Seuraava esimerkki palauttaa ROW_NUMBER
myyntiedustajille heidän määräämänsä myyntikiintiön perusteella.
Tässä on osittainen tulosjoukko.
F. ROW_NUMBER (): n käyttäminen osion kanssa
Seuraava esimerkki osoittaa ROW_NUMBER
-funktion käyttämisen argumentin PARTITION BY
kanssa. Tämä saa ROW_NUMBER
-funktion numeroimaan kunkin osion rivit.
Tässä on osittainen tulosjoukko.
Katso myös
RANK (Transact-SQL)
DENSE_RANK (Transact-SQL)
NTILE (Transact-SQL)