ROW_NUMBER (Svenska)
Syntax
Beskrivning av illustration row_number.gif
Se även:
”Analytiska funktioner” för information om syntax, semantik och begränsningar
Syfte
ROW_NUMBER är en analytisk funktion. Det tilldelar ett unikt nummer till varje rad som det tillämpas på (antingen varje rad i partitionen eller varje rad som returneras av frågan), i den ordnade sekvensen av rader som anges i order_by_clause , börjar med 1.
Genom att bygga en underfråga med ROW_NUMBER i en fråga som hämtar ROW_NUMBER -värdena för angivet intervall kan du hitta en exakt delmängd av rader från resultaten från den inre frågan. Denna användning av funktionen låter dig implementera topp-N, botten-N och inre-N rapportering. För konsekventa resultat måste frågan säkerställa en deterministisk sorteringsordning.
Du kan inte använda ROW_NUMBER eller någon annan analytisk funktion för expr. Det vill säga att du inte kan hysa analytiska funktioner, men du kan använda andra inbyggda funktionsuttryck för expr. Se ”Om SQL Expressions” för information om giltiga former av expr.
Exempel
För varje avdelning i provtabellen oe.employees, följande exempel tilldelar nummer till varje rad i ordning efter anställdas anställningsdatum:
ROW_NUMBER är nondeterministic function. employee_id är dock en unik nyckel, så resultatet av denna tillämpning av funktionen är deterministisk.
Se även:
FIRST_VALUE och LAST_VALUE för exempel på icke-bestämd beteende
Följande inner-N-fråga väljer alla rader från employees -tabellen men returnerar bara den femtio första genom en- hundradrad:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;