Cosa sono PIVOT e UNPIVOT
Gli operatori relazionali PIVOT e UNPIVOT possono essere utilizzati nei database SQL Server per modificare un’espressione con valori di tabella in un’altra tabella. Nello specifico, PIVOT ruota i valori in tabella convertendoli in valori di colonna, eseguendo nel mentre eventuali aggregazioni richieste. UNPIVOT invece esegue l’operazione opposta, trasformando le colonne di una tabella in valori di tabella.
Come utilizzare il comando PIVOT in T-SQL
Per dimostrazione prendiamo in esempio una relazione di questo genere.
La seguente query trova il numero di prodotti per ogni categoria:
Snippet will be rendered in the published site.
Il nostro obbiettivo sarà quello di ottenere una struttura del genere partendo dalle due tabelle sopra:
Passaggi per la creazione di una pivot table :
- Selezionare un dataset su cui fare il pivoting.
- Creare un risultato temporaneo usando una tabella derivata o una Common Table Expression.
- Applicare l’operatore PIVOT tra le due tabelle.
Applichiamo questi passaggi riprendendo l’esempio sopra. Creiamo il dataset su cui fare il pivoting. In questo caso prendiamo i dati relativi a Category_Name ed Item_ID
Snippet will be rendered in the published site.

Secondo, creiamo un risultato temporaneo usando una tabella derivata:
Snippet will be rendered in the published site.
Terzo, Applichiamo l’operatore di PIVOT:
Snippet will be rendered in the published site.
Ogni colonna addizionale che si aggiungerà alla lista di selezione della query che ritorna il dataset di base per il pivoting, formerà automaticamente dei raggruppamenti nella tabella finale.
Aggiungiamo ad esempio Year_Model
Snippet will be rendered in the published site.
Ecco l'esempio di PIVOT utilizzato in questo articolo spiegato in un video tutorial:
Snippet will be rendered in the published site.
Conclusioni
di Matteo Lucato, pubblicato il 2 marzo 2020