Перетворення рядків на стовпці
У цьому уроці ви дізналися, що PIVOT перетворює унікальні значення з одного стовпця на кілька стовпців.
Аналізуючи дані paper_shop_monthly_sales, ви розумієте, що структура цієї таблиці не підходить для звіту, який ви хочете створити.
Ви хочете згенерувати звіт такого вигляду:
|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018 | 150 | 150 | 80 |
| 2019 | 230 | 130 | 170 |
Іншими словами, ви хочете перетворити дані з рядків на стовпці та підсумувати кількість одиниць для кожного року.
Як ви бачили в попередніх вправах, назву товару та кількість одиниць потрібно розділити. Це робиться в підзапиті — перегляньте його.
Ця вправа є частиною курсу
Очищення даних у базах даних SQL Server
Інструкції до вправи
- Виберіть стовпці після
PIVOTдля кожного товару. - Додайте суму одиниць усередині оператора
PIVOT. - Після оператора
FORвкажіть назву стовпця, значення якого стануть заголовками стовпців. - Присвойте оператору
PIVOTім'яpaper_shop_pivot.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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 ___