Guida completa alla conversione dei dati di riga in dati di colonna utilizzando SQL PIVOT

In questa guida, spiegheremo come convertire i dati di riga in dati di colonna utilizzando la funzione PIVOT di SQL. Il PIVOT è estremamente utile nella gestione e nell’analisi dei database per organizzare i dati in modo più chiaro. Questo articolo fornirà una spiegazione passo dopo passo, dai concetti di base del PIVOT fino agli esempi pratici di utilizzo.

Indice

Concetti di base del PIVOT

Il PIVOT è una delle funzioni di trasformazione dei dati in SQL, utilizzata per convertire i dati di riga in dati di colonna. Ad esempio, se i dati di vendita sono archiviati in righe per mese e anno, è possibile visualizzarli come colonne per ciascun mese. Utilizzando PIVOT, la visualizzazione e l’analisi dei dati diventano più facili e aiuta nell’intelligenza aziendale.

Vantaggi dell’utilizzo del PIVOT

I vantaggi dell’utilizzo del PIVOT sono i seguenti.

Miglioramento della visualizzazione dei dati

Convertire i dati di riga in dati di colonna rende i dati più intuitivi e facili da comprendere. Questo è particolarmente utile per set di dati di grandi dimensioni, in cui la conversione in un formato visivamente più comprensibile può essere vantaggiosa.

Miglioramento dell’efficienza analitica

Organizzando i dati con PIVOT, è possibile estrarre rapidamente le informazioni necessarie, migliorando l’efficienza del processo analitico.

Semplificazione della creazione di report

PIVOT semplifica la creazione di report complessi. Raggruppando più dati di riga in un’unica colonna, i report diventano più facili da leggere e migliorano la qualità della presentazione.

Sintassi di base del PIVOT

La sintassi SQL di base per l’utilizzo del PIVOT è la seguente.

SELECT 
    [Colonna fissa],
    [Colonna creata da PIVOT1],
    [Colonna creata da PIVOT2],
    ...
FROM 
    (SELECT [Colonna1], [Colonna2], [Colonna da aggregare]
     FROM [Tabella di origine]) AS SourceTable
PIVOT
(
    SUM([Colonna da aggregare])
    FOR [Colonna2] IN ([Colonna creata da PIVOT1], [Colonna creata da PIVOT2], ...)
) AS PivotTable;

Spiegazione della sintassi di base del PIVOT

  • Colonna fissa: La colonna che rimane invariata dopo la trasformazione PIVOT.
  • Colonna creata da PIVOT: La parte che viene trasformata da dati di riga a dati di colonna.
  • Tabella di origine: La tabella che contiene i dati da cui partire per l’operazione PIVOT.
  • Colonna da aggregare: La colonna su cui si eseguono operazioni di aggregazione (ad esempio, importo delle vendite).
  • Funzione SUM: La funzione utilizzata per definire l’operazione di aggregazione. È possibile utilizzare anche altre funzioni come COUNT, AVG, MAX, MIN.

Esempio pratico: PIVOT dei dati di vendita

In questa sezione, utilizzeremo un esempio pratico di PIVOT sui dati di vendita. Supponiamo di avere la seguente tabella di dati di origine.

| Anno | Mese | Vendite |
|------|----|--------|
| 2023 | 1  | 1000   |
| 2023 | 2  | 1500   |
| 2023 | 3  | 1200   |
| 2023 | 4  | 1700   |
| 2023 | 1  | 1100   |
| 2023 | 2  | 1400   |
| 2023 | 3  | 1300   |
| 2023 | 4  | 1600   |

Il seguente SQL query converte questi dati, visualizzando le vendite per ciascun mese come colonne.

SELECT 
    Anno,
    [1] AS 'Gennaio',
    [2] AS 'Febbraio',
    [3] AS 'Marzo',
    [4] AS 'Aprile'
FROM 
    (SELECT Anno, Mese, Vendite FROM DatiVendite) AS SourceTable
PIVOT
(
    SUM(Vendite)
    FOR Mese IN ([1], [2], [3], [4])
) AS PivotTable;

L’esecuzione di questa query produrrà il seguente risultato.

| Anno | Gennaio | Febbraio | Marzo | Aprile |
|------|---------|----------|-------|--------|
| 2023 | 2100    | 2900     | 2500  | 3300   |

Spiegazione della query

  • La query SELECT Anno, Mese, Vendite FROM DatiVendite estrae i dati di origine.
  • La query SUM(Vendite) FOR Mese IN ([1], [2], [3], [4]) aggrega le vendite per ciascun mese, trasformandole in colonne.

In questo modo, i dati di vendita possono essere convertiti in dati di colonna per ciascun mese.

Esempi avanzati di PIVOT

Il PIVOT può essere applicato non solo per semplici aggregazioni, ma anche per analisi di dati più complesse. Di seguito sono riportati alcuni esempi avanzati.

Andamento delle vendite per anno

Utilizzando i dati di vendita su più anni, possiamo visualizzare l’andamento delle vendite mensili per anno utilizzando PIVOT.

SELECT 
    Anno,
    [1] AS 'Gennaio',
    [2] AS 'Febbraio',
    [3] AS 'Marzo',
    [4] AS 'Aprile',
    [5] AS 'Maggio',
    [6] AS 'Giugno',
    [7] AS 'Luglio',
    [8] AS 'Agosto',
    [9] AS 'Settembre',
    [10] AS 'Ottobre',
    [11] AS 'Novembre',
    [12] AS 'Dicembre'
FROM 
    (SELECT Anno, Mese, Vendite FROM DatiVendite) AS SourceTable
PIVOT
(
    SUM(Vendite)
    FOR Mese IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
) AS PivotTable;

Questa query mostra le vendite di ogni mese come colonne per ciascun anno, rendendo visibile l’andamento delle vendite annuali a colpo d’occhio.

Riepilogo mensile delle vendite per categoria

Possiamo aggregare le vendite per categoria su base mensile e visualizzare le vendite mensili per categoria utilizzando PIVOT.

SELECT 
    Categoria,
    [1] AS 'Gennaio',
    [2] AS 'Febbraio',
    [3] AS 'Marzo',
    [4] AS 'Aprile',
    [5] AS 'Maggio',
    [6] AS 'Giugno',
    [7] AS 'Luglio',
    [8] AS 'Agosto',
    [9] AS 'Settembre',
    [10] AS 'Ottobre',
    [11] AS 'Novembre',
    [12] AS 'Dicembre'
FROM 
    (SELECT Categoria, Mese, Vendite FROM DatiVendite) AS SourceTable
PIVOT
(
    SUM(Vendite)
    FOR Mese IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
) AS PivotTable;

Questa query visualizza le vendite mensili per ciascuna categoria come colonne, consentendo l’analisi delle prestazioni di vendita per categoria.

Differenze tra PIVOT e UNPIVOT

PIVOT e UNPIVOT sono due funzioni di trasformazione dei dati in SQL, ciascuna utilizzata per scopi diversi.

Funzione del PIVOT

PIVOT viene utilizzato per convertire i dati di riga in dati di colonna. In questo modo, è possibile visualizzare i valori di un campo specifico come colonne e visualizzare i risultati aggregati dei dati.

Esempio di utilizzo del PIVOT

Un esempio precedente ha dimostrato come aggregare i dati di vendita per mese e visualizzare le vendite di ciascun mese come colonne. Questo rende i dati più intuitivi e comprensibili.

Funzione dell’UNPIVOT

UNPIVOT viene utilizzato per convertire i dati di colonna in dati di riga. Questo consente di raggruppare i dati provenienti da più colonne in una singola colonna.

Esempio di utilizzo dell’UNPIVOT

Supponiamo di avere la seguente tabella.

| Anno | Gennaio | Febbraio | Marzo | Aprile |
|------|---------|----------|-------|--------|
| 2023 | 2100    | 2900     | 2500  | 3300   |

La seguente query UNPIVOT converte questi dati in dati di riga mensili.

SELECT 
    Anno,
    Mese,
    Vendite
FROM 
    (SELECT Anno, [Gennaio], [Febbraio], [Marzo], [Aprile] FROM DatiVendite) AS PivotTable
UNPIVOT
(
    Vendite FOR Mese IN ([Gennaio], [Febbraio], [Marzo], [Aprile])
) AS UnpivotTable;

L’esecuzione di questa query produrrà il seguente risultato.

| Anno | Mese   | Vendite |
|------|--------|--------|
| 2023 | Gennaio| 2100   |
| 2023 | Febbraio| 2900  |
| 2023 | Marzo  | 2500   |
| 2023 | Aprile | 3300   |

Quando utilizzare PIVOT e UNPIVOT

  • PIVOT: Utilizzato per convertire i dati di riga in dati di colonna. È efficace per la visualizzazione dei dati e la creazione di report.
  • UNPIVOT: Utilizzato per convertire i dati di colonna in dati di riga. È utile per la normalizzazione o la ristrutturazione dei dati.

Conclusione

In questo articolo, abbiamo spiegato in dettaglio come utilizzare la funzione PIVOT di SQL per convertire i dati di riga in dati di colonna. Il PIVOT è uno strumento potente che migliora la visualizzazione dei dati, aumenta l’efficienza analitica e semplifica la creazione di report. Abbiamo anche discusso le differenze tra PIVOT e UNPIVOT e il loro utilizzo.

Padroni l’utilizzo del PIVOT può ampliare le possibilità di analisi dei dati e rendere più intuitivo il lavoro con i dati. Prova a utilizzare PIVOT sui tuoi dati reali e scopri i vantaggi che può offrire.

Indice