Aan de slagGa gratis aan de slag

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

Cursus bekijken

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 naam paper_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 ___
Code bewerken en uitvoeren