Home > Informatica > PIVOT e UNPIVOT in SQL Server

PIVOT e UNPIVOT in SQL Server

scritto da: Datamaze | segnala un abuso

PIVOT e UNPIVOT in SQL Server

Le operazioni di PIVOT e UNPIVOT son ben note a chiunque debba lavorare con strumenti quali Excel


PIVOT e UNPIVOT in SQL Server
PIVOT
CREATE TABLE Prodotto
(
[CodProdotto] varchar(10)
, [Categoria] varchar(100)
, [Anno] numeric(4,0)
, [Prezzo] numeric(11,2)
)
UNPIVOT

Le operazioni di PIVOT e UNPIVOT son ben note a chiunque debba lavorare con strumenti quali Excel. In SQL Server, questi due operatori relazionali possono essere utilizzati per modificare un’espressione con valori di tabella in un’altra tabella. Essi consentono rispettivamente di trasformare valori di una tabella in valori di colonne e, viceversa, valori di colonna in valori di tabella. Vediamo come usarli.

Questa operazione trasforma i valori di una tabella in colonne della tabella stessa. Vediamo degli esempi.

Poniamo di avere una tabella anagrafica dei prodotti di questo tipo:

In ogni record abbiamo il codice del prodotto, la sua categoria, la sua marca ed il prezzo.

Essa trasforma le colonne di una tabella in valori della tabella stessa. Vediamone degli esempi.

Poniamo di avere una tabella delle vendite d’abbigliamento di questo tipo:

CREATE TABLE Vendite ( [NrOrdine] varchar(6) , [CodArticolo] varchar(10) , [QtaXXS] int , [QtaXs] int , [QtaS] int , [QtaM] int , [QtaL] int , [QtaXL] int , [QtaXXL] int )

In ogni record abbiamo il numero dell’ordine di vendita, il codice dell’articolo che vendiamo, e sette colonne ciascuna indicante la quantità di articolo venduti per ciascuna taglia, dalla XXS alla XXL. Per semplicità di esempio, prendiamo un solo record da questa tabella:

UNPIVOT risultato

Vogliamo trasformare questo singolo record in una tabella siffatta:

UNPIVOT tabella

In altre parole, vogliamo che le sette colonne divengano dei valori di tabella, generando sette record – uno per ciascuna delle sette taglie – a partire dall’unico che abbia preso in considerazione. Per far ciò, eseguiremo un’operazione di UNPIVOT, scrivendo la seguente query:

SELECT U.[NrOrdine] , U.[CodArticolo] , RTRIM( SUBSTRING( U.[Taglia], 4, 3 ) ) AS [Taglia] , U.[Qta] FROM [dbo].[Vendite] V UNPIVOT ( [Qta] FOR [Taglia] IN ( [QtaXXS], [QtaXS], [QtaS], [QtaM], [QtaL], [QtaXL], [QtaXXL] ) ) U ;

NB. Senza l’operazione di SUBSTRING, il valore stringa della nuova colonna [Taglia]comprenderebbe anche il Qtainiziale. 

Questo esempio è particolarmente semplice dato che le colonne delle quantità hanno tutte lo stesso tipo di dato, ovvero int. Se avessimo invece colonne di tipo diverso, anche solo nella lunghezza (per le stringhe) o precisione e scala (per i decimali)? In questo caso, è sufficiente dapprima convertire tutte le colonne interessate dall’operazione di UNPIVOT. Risulta di estrema comodità l’utilizzo di una common table expression: vediamo col seguente esempio, dove abbiamo delle colonne di tipo stringa, che poniamo essere tutte di differente lunghezza per definizione, e che decidiamo di convertire in nvarchar(MAX).


Fonte notizia: https://www.datamaze.it/blogs/post/pivot-e-unpivot-in-sql-server


sql | sql server | query | null |



Commenta l'articolo

 

Potrebbe anche interessarti

Le novità di SQL Server 2022


I controlli di SQL Catcher per SQL Server: avvisi e notifiche importanti


Licenze SQL Server 2022


HP lancia nuove piattaforme e soluzioni Compute per carichi di lavoro data-intensive


Soluzioni anti "network downtime" - la ricetta di KEMP Technologies


La nuova frontiera del monitoraggio di SQL Server con SQL Catcher


 

Se ritieni meritevole il nostro lavoro fai una donazione


Recenti

Stesso autore

Gestire più tabelle dei fatti in uno stesso dataset di Power BI (o modello Tabular di Analysis Services)

Gestire più tabelle dei fatti in uno stesso dataset di Power BI (o modello Tabular di Analysis Services)
Gestire più tabelle dei fatti in uno stesso dataset di Power BI (o modello Tabular di Analysis Services) Come mettere in relazione due o più tabelle dei fatti: una guida ai metodi di risoluzione. Un problema che mi capita sempre più spesso di dover affrontare coi clienti durante un progetto di Business Intelligence è quello di dover gestire più fact table in uno stesso modello d’analisi, che sia esso un modello Tabular in Analysis Services o un dataset di Power BI. Il dubbio del cliente è: come metto in relazione due (o più) tabelle dei fatti? Questa piccola guida (continua)

Dati, database, infrastruttura informatica in azienda.

Dati, database, infrastruttura informatica in azienda.
Quanti dati produciamo ogni giorno in azienda? Questi dati sono importanti? Come prendersene cura? Ecco come. In ogni tipo di azienda l’infrastruttura informatica è fondamentale per lo svolgimento delle attività produttive e per la crescita dell’azienda stessa. Una struttura progettata e mantenuta in modo efficace consente di velocizzare le mansioni, ridurre gli errori, ottimizzare i tempi e migliorare l’efficienza, il tutto garantendo la stabilità dell’infrastruttura e la sicurezza dei dati.I d (continua)

Licenze SQL Server 2022

Licenze SQL Server 2022
Microsoft ha introdotto diverse novità per quanto riguarda le licenze di SQL Server, con l’intenzione di conseguire una maggiore flessibilità dei piani e quindi più convenienza per gli utenti. Vediamo quali sono le modalità di licensing disponibili per ottenere SQL Server. Nelle ultime settimane Microsoft ha introdotto diverse novità per quanto riguarda le licenze di SQL Server, con l’intenzione di conseguire una maggiore flessibilità dei piani e quindi più convenienza per gli utenti. Vediamo quali sono le modalità di licensing disponibili per ottenere SQL Server. Noleggio licenze SQL Server per CoreGrazie ai partner Microsoft Cloud Solution Provider, è possibi (continua)

Come capire se la BI in azienda sta avendo successo

Come capire se la BI in azienda sta avendo successo
«Sto adottando con successo la Business Intelligence nella mia azienda?» Questa è una domanda a cui non è semplice rispondere. Come capire se la BI sta funzionando?Alcune aziende, nel non saper rispondere, incrociano le dita e sperano che tutto vada per il meglio, probabilmente senza indagare oltre. Altre, nell’aver seguito le best practice, confidano che quanto fatto sia sinonimo di successo, convinti che il successo avvenga e basta.Ovviamente non è così.Lo scopo è importante, perché si tratta di giustificare l (continua)

Introduzione completa a Microsoft Access

Introduzione completa a Microsoft Access
Access è un software per la creazione e la gestione di database, creato e fornito da Microsoft. Consente di creare basi dati, ovvero database, relazionali e programmi dedicati tramite interfaccia grafica sfruttando il Microsoft Jet Database Engine. Access supporta un linguaggio di programmazione basato su oggetti chiamato Visual Basic. Per cosa si usa Microsoft Access?L’applicazione principale di Access è la memorizzazione di dati in tabelle, con anche la possibilità di importare o di linkare dati da altre applicazioni e da altri database. Access riesce a gestire i database di grandi dimensioni offrendo funzionalità per inserire i dati in modo più semplice e veloce riducendo il margine di errore. Inoltre, mette a dispo (continua)