Questo comando viene utilizzato con SQL e numera il set dei risultati restituito da una SELECT. ROW_NUMBER è un valore temporaneo che viene calcolato al momento dell'esecuzione della query e restituisce un numero progressivo a partire da 1 all'interno di una partizione di un set di risultati.
Sintassi
ROW_NUMBER ( )OVER ( [ PARTITION BY value_expression , … [ n ] ] order_by_clause )
Parametri
PARTITION BY value_expression
Raggruppa i dati a iquali viene applicata la funzione ROW_NUMBER.
value_expression indicare per quali colonne raggruppare il set di dati. Se non viene specificato, la funzione considera tutte le righe della query.
Esempio 1
SELECT
ROW_NUMBER() OVER(ORDER BY campo_1 ASC) AS NumRiga,
campo_1, campo_2
FROM tabella
WHERE campo_3 < 5;
NumRiga | campo_1 | campo_2 |
---|---|---|
1 | valore_1 | valore_a |
2 | valore_2 | valore_b |
3 | valore_3 | valore_a |
4 | valore_4 | valore_a |
Esempio 2
SELECT
ROW_NUMBER() OVER(PARTITION BY campo_1 ASC) AS NumRiga,
campo_1, campo_2
FROM tabella
WHERE campo_3 < 5;
NumRiga | campo_1 | campo_2 |
---|---|---|
1 | valore_1 | valore_a |
2 | valore_4 | valore_a |
3 | valore_3 | valore_a |
4 | valore_2 | valore_b |
Esempio 3
DELETE
FROM
(
SELECT
ROW_NUMBER() OVER(PARTITION BY campo_1 ASC) AS NumRiga,
campo_1, campo_2
FROM tabella
) AS Res
WHERE NumRiha > 1;
Cancella tutte le righe duplicate secondo campo_1 dove il NumRiga è maggiore di 1
NumRiga | campo_1 | campo_2 |
---|---|---|
1 | valore_1 | valore_a |
1 | valore_2 | valore_b |
NumRiga | campo_1 | campo_2 |
---|---|---|
1 | valore_1 | valore_a |
1 | valore_2 | valore_b |