Rijen omzetten naar kolommen
In deze les heb je geleerd dat PIVOT de unieke waarden uit één kolom omzet naar meerdere kolommen.
Bij het analyseren van de gegevens in paper_shop_monthly_sales merk je dat de structuur van deze tabel niet geschikt is voor het rapport dat je wilt maken.
Je wilt een rapport genereren dat er zo uitziet:
|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018 | 150 | 150 | 80 |
| 2019 | 230 | 130 | 170 |
Met andere woorden: je wilt de gegevens die je nu in rijen hebt omzetten naar kolommen en de eenheden per jaar optellen.
Zoals je in de vorige oefeningen hebt gezien, moeten de productnamen en de eenheden worden gesplitst. Dit gebeurt in de subselect; bekijk die even.
Deze oefening maakt deel uit van de cursus
Gegevens opschonen in SQL Server-databases
Oefeninstructies
- Selecteer de gepivote kolommen voor elk product.
- Neem de som van de eenheden op binnen de
PIVOT-operator. - Zet na de
FOR-clausule de naam van de kolom die de waarden bevat die kolomkoppen worden. - Geef de
PIVOT-operator de naampaper_shop_pivot.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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 ___