In un precedente articolo ho trattato l’utilizzo delle RIGHE PRECEDENTI e SEGUENTI nella clausola over. Per questo esempio userò lo stesso database e le stesse tabelle che ho creato nell’esempio precedente per mostrare LE RIGHE ILLIMITATE sia PRIMA che DOPO.,
Una delle nuove funzionalità disponibili in TSQL in SQL Server 2012 sono le RIGHE ILLIMITATE PRECEDENTI e le RIGHE ILLIMITATE SEGUENTI opzioni. L’opzione ILLIMITATA è disponibile quando si utilizzano le opzioni PRECEDENTE e SUCCESSIVA. Ecco come funzionano ROWS
RIGHE ILLIMITATE PRECEDENTI
-- ROWS UNBOUNDED PRECEDINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS UNBOUNDED PRECEDING) as MinRevenueToDatefrom REVENUEorder by departmentID, year;
In questo esempio, MinRevenueToDate elenca le entrate più basse per questa riga e tutte le righe precedenti ordinate per data nell’id reparto corrente.
Puoi vedere che la riga 1 imposta MinRevenueToDate su 10030 e non cambia fino alla riga 7 con un anno di entrate inferiore.,
Quindi la riga 16 ricomincia per un nuovo reparto con le entrate correnti più basse fino ad oggi. Quindi la riga 21 ripristina un numero di entrate inferiore.
RIGHE UNBOUNDED SEGUENTI
Ora, per l’esempio di una SOVRABBONDANZA di SEGUITO:
-- ROWS UNBOUNDED FOLLOWINGselect Year, DepartmentID, Revenue, min(Revenue) OVER (PARTITION by DepartmentID ORDER BY ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) as MinRevenueBeyondfrom REVENUEorder by departmentID, year;
Dove si può vedere che il min(Entrate) viene calcolato su tutte le righe dalla riga corrente alla fine del set, suddiviso in base al id_dipartimento.,
L’opzione ILLIMITATA è molto utile per determinare un calcolo dall’inizio di un set alla riga corrente o dalla riga corrente alla fine di un set o di un gruppo.
Tieni presente che questa funzionalità è stata introdotta in SQL Server 2012 e non è disponibile nelle edizioni precedenti.
Link correlati
- SQL Query Training
- CTE Paging dei dati
- SOPRA clausola con RIGHE e INTERVALLO
Lascia un commento