Sammanfattning: i denna handledning lär du dig hur du använder SQL Server ROW_NUMBER()
funktion för att tilldela ett sekventiellt heltal till varje rad i en resultatuppsättning.
Introduktion till SQL Server ROW_NUMBER () -funktion
ROW_NUMBER()
är en fönsterfunktion som tilldelar ett sekventiellt heltal till varje rad inom partitionen av en resultatuppsättning. Radnumret börjar med 1 för den första raden i varje partition.
Följande visar syntax för ROW_NUMBER()
-funktionen:
Låt oss undersök syntaxen för ROW_NUMBER()
-funktionen i detalj.
DELNING AV
PARTITION BY
klausul delar resultatuppsättningen i partitioner (en annan term för grupper av rader). Funktionen ROW_NUMBER()
tillämpas separat på varje partition och återinitierar radnumret för varje partition.
PARTITION BY
-satsen är valfritt. Om du hoppar över den kommer funktionen ROW_NUMBER()
att behandla hela resultatuppsättningen som en enda partition.
BESTÄLLNING AV
ORDER BY
klausul definierar den logiska ordningen på raderna inom varje partition av resultatuppsättningen. ORDER BY
-satsen är obligatorisk eftersom ROW_NUMBER()
-funktionen är ordningskänslig.
SQL Server ROW_NUMBER () exempel
Vi använder tabellen sales.customers
från exempeldatabasen för att visa funktionen ROW_NUMBER()
.
Använda SQL Server ROW_NUMBER () funktion över ett resultatuppsättningsexempel
Följande uttalande använder ROW_NUMBER()
för att tilldela varje kundrad ett löpnummer:
Här är partiell output:
I det här exemplet, hoppade över PARTITION BY
-satsen, därför behandlade ROW_NUMBER()
hela resultatuppsättningen som en enda partition.
Använda SQL Server ROW_NUMBER () över partitionsexempel
Följande exempel använder ROW_NUMBER()
funktion för att tilldela ett sekventiellt heltal till varje kund. Det återställer numret när staden ändras:
Följande bild visar den partiella utdata:
I det här exemplet använde vi PARTITION BY
-satsen för att dela upp kunderna i partitioner efter stad. Radnumret initierades om när staden ändrades.
Användning av SQL Server ROW_NUMBER () för paginering
Funktionen ROW_NUMBER()
är användbar för paginering i applikationer. Du kan till exempel visa en lista med kunder efter sida där varje sida har 10 rader.
Följande exempel använder ROW_NUMBER()
för att returnera kunder från rad 11 till 20, vilket är den andra sidan:
Resultatet är som följer:
I detta exempel:
- Först använde CTE funktionen
ROW_NUMBER()
för att tilldela varje rad i resultatet anger ett sekventiellt heltal. - För det andra returnerade den yttre frågan raderna på den andra sidan, som har radnumret mellan 11 och 20.
I den här självstudien har du lärt dig hur man använder SQL Server ROW_NUMBER()
-funktionen för att tilldela ett sekventiellt heltal till varje rad inom en partition av en fråga.