CommencerCommencer gratuitement

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

Afficher le cours

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