시작하기무료로 시작하기

행을 열로 변환하기

이번 레슨에서는 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 ___
코드 편집 및 실행