Transformer des lignes en colonnes
Dans cette leçon, vous avez appris que PIVOT transforme les valeurs uniques d'une colonne en plusieurs colonnes.
En analysant les données de paper_shop_monthly_sales, vous constatez que la structure de cette table ne convient pas au rapport que vous souhaitez produire.
Vous voulez générer un rapport qui ressemble à ceci :
|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018 | 150 | 150 | 80 |
| 2019 | 230 | 130 | 170 |
Autrement dit, vous voulez convertir les données des lignes en données de colonnes et additionner les unités pour chaque année.
Comme vous l'avez vu dans les exercices précédents, il faut séparer le nom des produits et les unités. Cela est fait dans la sous-sélection ; jetez-y un coup d'œil.
Cette activité fait partie du cours
Nettoyer des données dans des bases de données SQL Server
Instructions de l’exercice
- 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 ce code d’exemple.
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 ___