SQL의 PIVOT을 사용하여 행 데이터를 열 데이터로 변환하는 완전 가이드

SQL의 PIVOT 기능을 사용하여 행 데이터를 열 데이터로 변환하는 방법을 자세히 설명합니다. 데이터베이스 관리 및 분석에서 데이터를 보기 쉽게 정리하기 위해 PIVOT은 매우 유용합니다. 이 기사에서는 PIVOT의 기본 개념부터 실제 사용 예까지 단계별로 설명합니다.

목차

PIVOT의 기본 개념

PIVOT은 SQL에서 행 데이터를 열 데이터로 변환하는 데 사용되는 데이터 변환 기능 중 하나입니다. 예를 들어, 매출 데이터가 연도와 월별로 행으로 저장되어 있을 경우, 이를 각 월의 매출을 열로 표시할 수 있습니다. PIVOT을 사용하면 데이터의 시각화 및 분석이 용이해져 비즈니스 인텔리전스에 도움이 됩니다.

PIVOT을 사용하는 이점

PIVOT을 사용함으로써 얻을 수 있는 이점은 다음과 같습니다.

데이터 시각화 향상

행 데이터를 열 데이터로 변환하여 데이터를 직관적으로 이해하기 쉬워집니다. 특히 대량의 데이터 세트의 경우, 시각적으로 쉽게 파악할 수 있는 형식으로 변환할 수 있습니다.

분석 효율 향상

PIVOT을 사용하여 데이터를 정리하면 필요한 정보를 신속하게 추출할 수 있어 분석 작업의 효율이 향상됩니다.

보고서 작성 간소화

PIVOT은 복잡한 보고서 작성을 간소화합니다. 여러 행 데이터를 하나의 열로 묶어 보고서를 보기 쉽게 하여 보고서의 품질을 높일 수 있습니다.

PIVOT의 기본적인 문법

PIVOT을 사용하기 위한 기본적인 SQL 문법은 다음과 같습니다.

SELECT 
    [고정된 열],
    [PIVOT으로 생성된 열1],
    [PIVOT으로 생성된 열2],
    ...
FROM 
    (SELECT [열1], [열2], [집계 대상 열]
     FROM [원본 데이터 테이블]) AS SourceTable
PIVOT
(
    SUM([집계 대상 열])
    FOR [열2] IN ([PIVOT으로 생성된 열1], [PIVOT으로 생성된 열2], ...)
) AS PivotTable;

기본적인 PIVOT 문법 설명

  • 고정된 열: PIVOT 변환 후에도 그대로 남는 열입니다.
  • PIVOT으로 생성된 열: 행 데이터가 열 데이터로 변환되는 부분입니다.
  • 원본 데이터 테이블: PIVOT 작업의 원본이 되는 데이터가 저장된 테이블입니다.
  • 집계 대상 열: 집계 작업을 수행할 열입니다(예: 매출액 등).
  • SUM 함수: 집계 작업을 정의하는 함수입니다. 이 외에도 COUNT, AVG, MAX, MIN 등을 사용할 수 있습니다.

실제 예: 매출 데이터의 PIVOT

여기서는 매출 데이터를 사용한 PIVOT의 구체적인 예를 소개합니다. 아래의 테이블이 원본 데이터라고 가정합니다.

| 연도 | 월 | 매출 |
|------|----|------|
| 2023 | 1  | 1000 |
| 2023 | 2  | 1500 |
| 2023 | 3  | 1200 |
| 2023 | 4  | 1700 |
| 2023 | 1  | 1100 |
| 2023 | 2  | 1400 |
| 2023 | 3  | 1300 |
| 2023 | 4  | 1600 |

이 데이터를 월별 매출을 열로 변환하여 표시하는 SQL 쿼리는 다음과 같습니다.

SELECT 
    연도,
    [1] AS '1월',
    [2] AS '2월',
    [3] AS '3월',
    [4] AS '4월'
FROM 
    (SELECT 연도, 월, 매출 FROM 매출 데이터) AS SourceTable
PIVOT
(
    SUM(매출)
    FOR 월 IN ([1], [2], [3], [4])
) AS PivotTable;

이 쿼리를 실행하면 다음과 같은 결과가 나옵니다.

| 연도 | 1월 | 2월  | 3월  | 4월  |
|------|-----|------|------|------|
| 2023 | 2100 | 2900 | 2500 | 3300 |

쿼리 설명

  • SELECT 연도, 월, 매출 FROM 매출 데이터에서 원본 데이터를 추출합니다.
  • SUM(매출) FOR 월 IN ([1], [2], [3], [4])에서 각 월의 매출을 합산하고, 이를 열로 변환합니다.

이와 같이 매출 데이터를 월별 열 데이터로 변환할 수 있습니다.

PIVOT의 응용 예

PIVOT은 기본적인 집계뿐만 아니라 더 복잡한 데이터 분석에도 응용할 수 있습니다. 아래에 몇 가지 응용 예를 소개합니다.

연도별 매출 추이

여러 연도에 걸친 매출 데이터를 PIVOT을 사용하여 연도별 월별 매출 추이를 표시합니다.

SELECT 
    연도,
    [1] AS '1월',
    [2] AS '2월',
    [3] AS '3월',
    [4] AS '4월',
    [5] AS '5월',
    [6] AS '6월',
    [7] AS '7월',
    [8] AS '8월',
    [9] AS '9월',
    [10] AS '10월',
    [11] AS '11월',
    [12] AS '12월'
FROM 
    (SELECT 연도, 월, 매출 FROM 매출 데이터) AS SourceTable
PIVOT
(
    SUM(매출)
    FOR 월 IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
) AS PivotTable;

이 쿼리로 각 연도의 모든 월의 매출이 열로 표시되어, 연도별 매출 추이를 한눈에 파악할 수 있습니다.

카테고리별 매출의 월간 집계

카테고리별 매출을 월간으로 집계하고, 카테고리별 월별 매출을 PIVOT으로 표시합니다.

SELECT 
    카테고리,
    [1] AS '1월',
    [2] AS '2월',
    [3] AS '3월',
    [4] AS '4월',
    [5] AS '5월',
    [6] AS '6월',
    [7] AS '7월',
    [8] AS '8월',
    [9] AS '9월',
    [10] AS '10월',
    [11] AS '11월',
    [12] AS '12월'
FROM 
    (SELECT 카테고리, 월, 매출 FROM 매출 데이터) AS SourceTable
PIVOT
(
    SUM(매출)
    FOR 월 IN ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12])
) AS PivotTable;

이 쿼리로 각 카테고리의 월별 매출이 열로 표시되어, 카테고리별 매출 성과를 분석할 수 있습니다.

PIVOT과 UNPIVOT의 차이

PIVOT과 UNPIVOT은 SQL에서 데이터 변환을 위한 두 가지 중요한 기능이지만, 각각 다른 목적에 사용됩니다.

PIVOT의 역할

PIVOT은 행 데이터를 열 데이터로 변환하는 데 사용됩니다. 이를 통해 특정 필드 값을 열로 표시하고, 데이터의 집계 결과를 시각화할 수 있습니다.

PIVOT의 사용 예

매출 데이터를 월별로 집계하고, 각 월의 매출을 열로 표시하는 사례를 앞서 예시로 들었습니다. 이를 통해 데이터가 더 직관적으로 이해될 수 있습니다.

UNPIVOT의 역할

UNPIVOT은 열 데이터를 행 데이터로 변환하는 데 사용됩니다. 이를 통해 여러 열의 데이터를 하나의 열로 모을 수 있습니다.

UNPIVOT의 사용 예

다음 테이블이 있다고 가정합니다.

| 연도 | 1월  | 2월  | 3월  | 4월  |
|------|------|------|------|------|
| 2023 | 2100 | 2900 | 2500 | 3300 |

이 데이터를 월별 행 데이터로 변환하는 UNPIVOT 쿼리는 다음과 같습니다.

SELECT 
    연도,
    월,
    매출
FROM 
    (SELECT 연도, [1월], [2월], [3월], [4월] FROM 매출 데이터) AS PivotTable
UNPIVOT
(
    매출 FOR 월 IN ([1월], [2월], [3월], [4월])
) AS UnpivotTable;

이 쿼리로 다음과 같은 결과가 나옵니다.

| 연도 | 월  | 매출 |
|------|-----|------|
| 2023 | 1월 | 2100 |
| 2023 | 2월 | 2900 |
| 2023 | 3월 | 2500 |
| 2023 | 4월 | 3300 |

PIVOT과 UNPIVOT의 사용 구분

  • PIVOT: 행 데이터를 열 데이터로 변환할 때 사용합니다. 데이터 시각화 및 보고서 작성에 유용합니다.
  • UNPIVOT: 열 데이터를 행 데이터로 변환할 때 사용합니다. 데이터 정규화 및 재구성에 유용합니다.

요약

이 기사에서는 SQL의 PIVOT 기능을 사용하여 행 데이터를 열 데이터로 변환하는 방법을 자세히 설명했습니다. PIVOT은 데이터 시각화를 개선하고, 분석 효율을 높이며, 보고서 작성을 간소화하는 강력한 도구입니다. 또한, PIVOT과 UNPIVOT의 차이와 각각의 사용 방법에 대해서도 설명했습니다.

PIVOT을 능숙하게 활용하면 데이터 분석의 범위가 넓어지며, 더 직관적으로 데이터를 다룰 수 있게 됩니다. 실제 데이터에 PIVOT을 적용하여 그 효과를 경험해 보세요.

목차