ROW_NUMBER (Dansk)
Syntaks
Beskrivelse af illustration row_number.gif
Se også:
“Analytiske funktioner” for information om syntaks, semantik og begrænsninger
Formål
ROW_NUMBER
er en analytisk funktion. Det tildeler et unikt nummer til hver række, som det anvendes til (enten hver række i partitionen eller hver række returneret af forespørgslen) i den ordnede række af rækker, der er specificeret i order_by_clause
, der begynder med 1.
Ved at indlejre en underforespørgsel ved hjælp af ROW_NUMBER
i en forespørgsel, der henter ROW_NUMBER
værdier for en angivet interval, kan du finde et præcist delsæt af rækker fra resultaterne af den indre forespørgsel. Denne brug af funktionen giver dig mulighed for at implementere top-N, bottom-N og inner-N rapportering. For ensartede resultater skal forespørgslen sikre en deterministisk sorteringsrækkefølge.
Du kan ikke bruge ROW_NUMBER
eller nogen anden analytisk funktion til expr
. Det vil sige, du kan ikke rede analytiske funktioner, men du kan bruge andre indbyggede funktionsudtryk til expr
. Se “Om SQL Expressions” for information om gyldige former for expr
.
Eksempler
For hver afdeling i eksempeltabellen oe.employees
, det følgende eksempel tildeler numre til hver række i rækkefølge efter medarbejderens ansættelsesdato:
ROW_NUMBER
er en ikke-deterministisk funktion. employee_id
er dog en unik nøgle, så resultaterne af denne anvendelse af funktionen er deterministiske.
Se også:
FIRST_VALUE og LAST_VALUE for eksempler på ikke-deterministisk adfærd
Følgende indre-N-forespørgsel vælger alle rækker fra employees
-tabellen, men returnerer kun den enoghalvfjerds gennem en- hundrede række:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;