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
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
PIVOTil nomepaper_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 ___