Zamiana wierszy na kolumny
W tej lekcji poznałeś(-aś) operator PIVOT, który zamienia unikalne wartości z jednej kolumny na wiele kolumn.
Analizując dane w tabeli paper_shop_monthly_sales, zauważasz, że jej struktura nie jest odpowiednia dla raportu, który chcesz przygotować.
Chcesz wygenerować raport w następującej postaci:
|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018 | 150 | 150 | 80 |
| 2019 | 230 | 130 | 170 |
Innymi słowy, chcesz przekształcić dane z wierszy w kolumny i zsumować jednostki dla każdego roku.
Jak wiesz z poprzednich ćwiczeń, nazwy produktów i liczba jednostek muszą zostać rozdzielone. Dzieje się to w podzapytaniu – przyjrzyj się mu uważnie.
To ćwiczenie jest częścią kursu
Czyszczenie danych w bazach danych SQL Server
Instrukcje do ćwiczenia
- Wybierz kolumny przestawione dla każdego produktu.
- Uwzględnij sumę jednostek wewnątrz operatora
PIVOT. - Po instrukcji
FORpodaj nazwę kolumny, której wartości staną się nagłówkami kolumn. - Nadaj operatorowi
PIVOTaliaspaper_shop_pivot.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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 ___