CommencezCommencez gratuitement

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

Voir le cours

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 PIVOT le nom paper_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 ___
Modifier et exécuter le code