Преобразование строк в столбцы
В этом уроке вы узнали, что оператор PIVOT преобразует уникальные значения из одного столбца в несколько столбцов.
Анализируя данные таблицы paper_shop_monthly_sales, вы понимаете, что её структура не подходит для отчёта, который вы хотите создать.
Вы хотите сформировать отчёт следующего вида:
|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018 | 150 | 150 | 80 |
| 2019 | 230 | 130 | 170 |
Другими словами, нужно преобразовать данные из строк в столбцы и просуммировать количество единиц товара за каждый год.
Как вы узнали из предыдущих упражнений, названия продуктов и количество единиц необходимо разделить. Это делается в подзапросе — обратите на него внимание.
Это упражнение является частью курса
Очистка данных в базах данных SQL Server
Инструкции к упражнению
- Выберите сводные столбцы для каждого продукта.
- Включите сумму единиц товара внутри оператора
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 ___