Převod řádků na sloupce
V této lekci ses naučil/a, že PIVOT převádí unikátní hodnoty z jednoho sloupce do více sloupců.
Při analýze dat tabulky paper_shop_monthly_sales zjistíš, že její struktura není vhodná pro sestavu, kterou chceš vytvořit.
Chceš vygenerovat sestavu s tímto vzhledem:
|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018 | 150 | 150 | 80 |
| 2019 | 230 | 130 | 170 |
Jinak řečeno, chceš přesunout data z řádků do sloupců a sečíst počty kusů za každý rok.
Jak sis osvojil/a z předchozích cvičení, název produktů a počty kusů je potřeba nejprve rozdělit. To se provádí v poddotazu – podívej se na něj.
Toto cvičení je součástí kurzu
Cleaning Data in SQL Server Databases
Pokyny k cvičení
- Vyber pivotované sloupce pro každý produkt.
- Do operátoru
PIVOTzahrň součet jednotek. - Za příkaz
FORuveď název sloupce, jehož hodnoty se stanou záhlavími sloupců. - Operátoru
PIVOTpřiřaď názevpaper_shop_pivot.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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 ___