Creare righe sequenziali in una query SQL Server

di | 1 Maggio 2018
Spread the love

Spesso per motivi diversi può rendersi necessario generare un contatore di righe all’interno di una query SQL. In questi casi è possibile utilizzare il comando ROW_NUMBER(),  il quale restituisce il numero sequenziale di riga all’interno di una query effettuata con SQL server.

La sintassi è la seguente:

ROW_NUMBER ( )  OVER ( [ PARTITION BY  [campo1, campo2, ..] ORDER BY [campo di ordinamento]  )

Partition by consente di suddividere il set di risultati in base ai campi indicati, mentre Order by definisce l’ordinamento.

Supponiamo di avere una tabella dei movimenti di magazzino la cui chiave è l’identificativo del documento “IdDocumento”, la data di  registrazione, ed il numero del documento.

Questa tabella non ha un numero di riga per IdDocumento. Pertanto se abbiamo la necessità di contare il numero di righe per documento presente nella tabella possiamo creare una query con l’aggiunta della funzione Row_number().

Pertanto eseguendo la seguente query otterremmo il risultato di seguito esposto: SELECT  DBGruppo, IdDocumento, row_number() over (partition by iddocumento order by iddocumento) as Nriga, DataRegistrazione, NRegistrazione, CodArt, Esercizio, CodOp, UdM, Quantita, DesRegistrazione FROM  MovimMag