ROW_NUMBER (Transact-SQL) (Suomi)

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

  1. Arvot jaetun sarakkeen sarakkeet ovat ainutlaatuisia.

  2. ORDER BY -sarakkeiden arvot ovat ainutlaatuisia.

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

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *