행을 열로 변환하기
이번 레슨에서는 PIVOT이 한 열의 고유 값을 여러 열로 바꿔 준다는 것을 배웠습니다.
paper_shop_monthly_sales 데이터를 살펴보니, 만들려는 보고서에 이 테이블 구조가 적합하지 않다는 것을 알게 되었어요.
다음과 같은 형태의 보고서를 생성하고자 합니다:
|year_of_sale|notebooks|pencils|crayons|
|------------|---------|-------|-------|
| 2018 | 150 | 150 | 80 |
| 2019 | 230 | 130 | 170 |
즉, 현재 행에 있는 데이터를 열로 바꾸고, 연도별로 단위를 합계 내고 싶습니다.
이전 연습 문제에서 배웠듯이 제품 이름과 단위는 분리해야 합니다. 이는 서브셀렉트에서 처리되니, 이를 참고하세요.
이 연습은 강의의 일부입니다
SQL Server 데이터베이스에서 데이터 정제하기
연습 안내
- 각 제품에 대해 피벗된 열을 선택하세요.
PIVOT연산자 내부에 단위의 합계(SUM)를 포함하세요.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 ___