IniziaInizia gratis

Trasformare le righe in colonne

In questa lezione, hai visto che PIVOT trasforma i valori unici di una colonna in più colonne.

Analizzando i dati di paper_shop_monthly_sales, ti accorgi che la struttura di questa tabella non è adatta al report che vuoi creare.

Vuoi generare un report con questo aspetto:

|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018       | 150     | 150   | 80    |
| 2019       | 230     | 130   | 170   |

In altre parole, vuoi convertire i dati che hai nelle righe in dati su colonne e sommare le unità per ogni anno.

Come hai visto negli esercizi precedenti, il nome dei prodotti e le unità devono essere separati. Questo avviene nella sottoquery: dagli un'occhiata.

Questo esercizio fa parte del corso

Pulizia dei dati nei database SQL Server

Visualizza il corso

Istruzioni dell'esercizio

  • Seleziona le colonne pivotate per ogni prodotto.
  • Includi la somma delle unità all'interno dell'operatore PIVOT.
  • Dopo l'istruzione FOR, includi il nome della colonna che contiene i valori che diventeranno intestazioni di colonna.
  • Assegna all'operatore PIVOT il nome paper_shop_pivot.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

SELECT
	year_of_sale,
    -- Select the pivoted columns
	___, 
	___, 
	___
FROM
   (SELECT 
		SUBSTRING(product_name_units, 1, charindex('-', product_name_units)-1) product_name, 
		CAST(SUBSTRING(product_name_units, charindex('-', product_name_units)+1, len(product_name_units)) AS INT) units,	
		year_of_sale
	FROM paper_shop_monthly_sales) sales
-- Sum the units for column that contains the values that will be column headers
PIVOT (SUM(___) FOR ___ IN (notebooks, pencils, crayons))
-- Give the alias name
AS ___
Modifica ed esegui il codice