НачатьНачать бесплатно

Преобразование строк в столбцы

В этом уроке вы узнали, что оператор 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 ___
Редактировать и запускать код