Riepilogo: in questo tutorial imparerai come utilizzare SQL Server ROW_NUMBER()
funzione per assegnare un numero intero sequenziale a ogni riga di un set di risultati.
Introduzione alla funzione ROW_NUMBER () di SQL Server
Il ROW_NUMBER()
è una funzione finestra che assegna un numero intero sequenziale a ciascuna riga allinterno della partizione di un set di risultati. Il numero di riga inizia con 1 per la prima riga di ogni partizione.
Quanto segue mostra la sintassi della funzione ROW_NUMBER()
:
Lets esamina in dettaglio la sintassi della funzione ROW_NUMBER()
.
PARTITION BY
Il PARTITION BY
la clausola divide il set di risultati in partizioni (un altro termine per gruppi di righe). La funzione ROW_NUMBER()
viene applicata a ciascuna partizione separatamente e reinizializza il numero di riga per ciascuna partizione.
La clausola PARTITION BY
è opzionale. Se lo salti, la funzione ROW_NUMBER()
tratterà lintero set di risultati come una singola partizione.
ORDER BY
Il ORDER BY
la clausola definisce lordine logico delle righe allinterno di ciascuna partizione del set di risultati. La clausola ORDER BY
è obbligatoria perché la funzione ROW_NUMBER()
è sensibile allordine.
SQL Esempi di server ROW_NUMBER ()
Useremo la tabella sales.customers
dal database di esempio per dimostrare la funzione ROW_NUMBER()
.
Utilizzo di SQL Server ROW_NUMBER () su un esempio di set di risultati
La seguente istruzione utilizza ROW_NUMBER()
per assegnare a ciascuna riga del cliente un numero sequenziale:
Ecco il parziale output:
In questo esempio, abbiamo ha ignorato la clausola PARTITION BY
, pertanto ROW_NUMBER()
ha considerato lintero set di risultati come una singola partizione.
Utilizzo di SQL Esempio di server ROW_NUMBER () su partizioni
Lesempio seguente utilizza ROW_NUMBER()
funzione per assegnare un numero intero sequenziale a ciascun cliente. Azzera il numero quando la città cambia:
Limmagine seguente mostra loutput parziale:
In questo esempio, abbiamo utilizzato la clausola PARTITION BY
per dividere i clienti in partizioni per città. Il numero di riga è stato reinizializzato quando la città è cambiata.
Utilizzo di SQL Server ROW_NUMBER () per limpaginazione
La funzione ROW_NUMBER()
è utile per limpaginazione nelle applicazioni. Ad esempio, puoi visualizzare un elenco di clienti per pagina, dove ogni pagina ha 10 righe.
Lesempio seguente utilizza ROW_NUMBER()
per restituire i clienti dalla riga 11 a 20, che è la seconda pagina:
Loutput è il seguente:
In questo esempio:
- Innanzitutto, il CTE ha utilizzato la funzione
ROW_NUMBER()
per assegnare ogni riga nel risultato imposta un numero intero sequenziale. - In secondo luogo, la query esterna ha restituito le righe della seconda pagina, che hanno il numero di riga compreso tra 11 e 20.
In questo tutorial, hai imparato a utilizzare la funzione ROW_NUMBER()
di SQL Server per assegnare un numero intero sequenziale a ciascuna riga allinterno di una partizione di una query.