Transformer des lignes en colonnes
Dans cette leçon, vous avez vu que PIVOT transforme les valeurs uniques d’une colonne en plusieurs colonnes.
En analysant les données de paper_shop_monthly_sales, vous réalisez que la structure de cette table n’est pas adaptée au rapport que vous souhaitez produire.
Vous voulez générer un rapport avec cet aspect :
|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018 | 150 | 150 | 80 |
| 2019 | 230 | 130 | 170 |
Autrement dit, vous voulez convertir les données présentes en lignes en données en colonnes et sommer les unités pour chaque année.
Comme vous l’avez appris dans les exercices précédents, le nom des produits et les unités doivent être séparés. Cela est fait dans la sous‑sélection, jetez‑y un œil.
Cet exercice fait partie du cours
Nettoyer des données dans des bases SQL Server
Instructions
- Sélectionnez les colonnes pivotées pour chaque produit.
- Intégrez la somme des unités dans l’opérateur
PIVOT. - Après l’instruction
FOR, indiquez le nom de la colonne dont les valeurs deviendront les en‑têtes de colonnes. - Donnez à l’opérateur
PIVOTle nompaper_shop_pivot.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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 ___