Oversigt: i denne vejledning lærer du, hvordan du bruger SQL Server ROW_NUMBER() funktion til at tildele et sekventielt heltal til hver række i et resultatsæt.
Introduktion til SQL Server ROW_NUMBER () -funktion
ROW_NUMBER() er en vinduesfunktion, der tildeler et sekventielt heltal til hver række inden for partitionen af et resultatsæt. Rækkens nummer starter med 1 for den første række i hver partition.
Følgende viser syntaksen for ROW_NUMBER() -funktionen:
Lad os undersøge syntaksen for ROW_NUMBER() -funktionen i detaljer.
PARTITION BY
PARTITION BY klausul opdeler resultatsættet i partitioner (et andet udtryk for grupper af rækker). Funktionen ROW_NUMBER() påføres hver partition separat og geninitialiseres række nummeret for hver partition.
PARTITION BY -klausulen er valgfri. Hvis du springer den over, behandler ROW_NUMBER() -funktionen hele resultatsættet som en enkelt partition.
ORDER BY
ORDER BY klausul definerer den logiske rækkefølge for rækkerne inden for hver partition af resultatsættet. ORDER BY -klausulen er obligatorisk, fordi ROW_NUMBER() -funktionen er rækkefølsom.
SQL Eksempler på server ROW_NUMBER ()
Vi bruger sales.customers -tabellen fra eksempeldatabasen til at demonstrere funktionen ROW_NUMBER() .
Brug af SQL Server ROW_NUMBER () funktion over et resultatsæteksempel
Følgende udsagn bruger ROW_NUMBER() til at tildele hver kunderække et løbenummer:
Her er den delvise output:
I dette eksempel viser vi sprang PARTITION BY -klausulen, derfor behandlede ROW_NUMBER() hele resultatsættet som en enkelt partition.
Brug af SQL Server ROW_NUMBER () over partitionseksempel
Følgende eksempel bruger ROW_NUMBER() funktion til at tildele et sekventielt heltal til hver kunde. Det nulstiller antallet, når byen ændres:
Følgende billede viser deloutput:
I dette eksempel brugte vi PARTITION BY -klausulen til at opdele kunderne i partitioner efter by. Række nummeret blev geninitialiseret, da byen ændredes.
Brug af SQL Server ROW_NUMBER () til pagination
Funktionen ROW_NUMBER() er nyttig til pagination i applikationer. For eksempel kan du vise en liste over kunder efter side, hvor hver side har 10 rækker.
Følgende eksempel bruger ROW_NUMBER() til at returnere kunder fra række 11 til 20, hvilket er den anden side:
Outputtet er som følger:
I dette eksempel:
- Først brugte CTE funktionen
ROW_NUMBER()til at tildele hver række i resultatet indstiller et sekventielt heltal. - For det andet returnerede den ydre forespørgsel rækkerne på den anden side, som har række nummer mellem 11 og 20.
I denne vejledning har du lært, hvordan du bruger SQL Server ROW_NUMBER() -funktionen til at tildele et sekventielt heltal til hver række inden for en partition af en forespørgsel.