ROW_NUMBER (Norsk)
Syntaks
Beskrivelse av illustrasjon row_number.gif
Se også:
«Analytiske funksjoner» for informasjon om syntaks, semantikk og begrensninger
Formål
ROW_NUMBER er en analytisk funksjon. Den tilordner et unikt nummer til hver rad det brukes på (enten hver rad i partisjonen eller hver rad som returneres av spørringen), i den ordnede rekkefølgen av rader som er spesifisert i order_by_clause , begynner med 1.
Ved å hekke et underspørring ved hjelp av ROW_NUMBER i et spørsmål som henter ROW_NUMBER verdiene for angitt område, kan du finne et presist delsett av rader fra resultatene av det indre spørringen. Denne bruken av funksjonen lar deg implementere topp-N, bunn-N og indre-N rapportering. For konsekvente resultater må spørringen sikre en deterministisk sorteringsrekkefølge.
Du kan ikke bruke ROW_NUMBER eller noen annen analytisk funksjon for expr. Det vil si at du ikke kan rede analytiske funksjoner, men du kan bruke andre innebygde funksjonsuttrykk for expr. Se «Om SQL Expressions» for informasjon om gyldige former for expr.
Eksempler
For hver avdeling i eksempeltabellen oe.employees, tildeler følgende eksempel tall til hver rad i rekkefølge etter ansattes ansettelsesdato:
ROW_NUMBER er en ikke-bestemt funksjon. Imidlertid er employee_id en unik nøkkel, så resultatene av denne applikasjonen av funksjonen er deterministiske.
Se også:
FIRST_VALUE og LAST_VALUE for eksempler på ikke-deterministisk oppførsel
Følgende inner-N-spørring velger alle rader fra employees -tabellen, men returnerer bare den femtiførste til en- hundre rad:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;