Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Wybierz kolumny przestawione dla każdego produktu.
  • Uwzględnij sumę jednostek wewnątrz operatora PIVOT.
  • Po instrukcji FOR podaj nazwę kolumny, której wartości staną się nagłówkami kolumn.
  • Nadaj operatorowi PIVOT alias paper_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 ___
Edytuj i uruchom kod