SQL의 PIVOT 이해하기: 행을 열로 변환
Grace Collins
Solutions Engineer · Leapcell

Key Takeaways
- SQL의 PIVOT 연산자는 더 쉬운 분석을 위해 행을 열로 회전시킵니다.
- PIVOT 구문 및 사용법은 데이터베이스 시스템마다 다릅니다.
- PIVOT은 데이터를 효율적으로 요약하고 보고하는 데 이상적입니다.
소개
SQL에서 데이터는 종종 정규화된 행 기반 형식으로 저장됩니다. 이는 트랜잭션 처리에는 훌륭하지만 보고 및 분석에는 항상 이상적인 것은 아닙니다. 여기서 PIVOT
연산자가 매우 유용해집니다. SQL의 PIVOT
함수를 사용하면 행을 열로 회전시켜 데이터를 더 쉽게 읽고 분석할 수 있습니다. 특히 보고 및 비즈니스 인텔리전스 작업에 유용합니다. 이 기사에서는 PIVOT
이 무엇인지, 사용하는 방법 및 실제 예제를 살펴보겠습니다.
SQL에서 PIVOT이란 무엇입니까?
SQL의 PIVOT
연산자는 행에서 열로 데이터를 변환하거나 회전시키는 데 사용됩니다. 이 프로세스를 교차 분석이라고도 합니다. 데이터를 요약하고 보다 이해하기 쉬운 매트릭스 형식으로 표시하려는 경우에 특히 유용합니다.
PIVOT 사용의 주요 이점:
- 데이터 분석 및 보고 간소화
- 데이터 시각화 용이성 향상
- 여러 범주에 걸쳐 데이터 비교 지원
PIVOT의 기본 구문
다음은 SQL Server에서 PIVOT
연산자를 사용하는 기본 구문입니다(Oracle 및 PostgreSQL과 같은 다른 데이터베이스는 다른 접근 방식을 사용함).
SELECT <non-pivoted column>, [first pivoted column] AS <column name>, [second pivoted column] AS <column name>, ... FROM ( SELECT <column to aggregate>, <column to pivot>, <non-pivoted column> FROM <table_name> ) AS SourceTable PIVOT ( <aggregate function>(<column to aggregate>) FOR <column to pivot> IN ([first pivoted column], [second pivoted column], ...) ) AS PivotTable;
실제 예제
Sales
라는 테이블이 있다고 가정합니다.
Year | Quarter | Revenue |
---|---|---|
2023 | Q1 | 1000 |
2023 | Q2 | 1500 |
2023 | Q3 | 2000 |
2023 | Q4 | 1800 |
2024 | Q1 | 1200 |
2024 | Q2 | 1600 |
각 분기가 열이 되고 각 연도가 행으로 유지되도록 데이터를 변환하려면 PIVOT
연산자를 사용할 수 있습니다.
SELECT Year, [Q1], [Q2], [Q3], [Q4] FROM ( SELECT Year, Quarter, Revenue FROM Sales ) AS SourceTable PIVOT ( SUM(Revenue) FOR Quarter IN ([Q1], [Q2], [Q3], [Q4]) ) AS PivotTable;
결과:
Year | Q1 | Q2 | Q3 | Q4 |
---|---|---|---|---|
2023 | 1000 | 1500 | 2000 | 1800 |
2024 | 1200 | 1600 | NULL | NULL |
기타 데이터베이스의 PIVOT
모든 SQL 데이터베이스에 기본 제공 PIVOT
연산자가 있는 것은 아닙니다. 예를 들면 다음과 같습니다.
- Oracle은 기본
PIVOT
절을 지원합니다. - PostgreSQL은
PIVOT
키워드가 없지만tablefunc
확장 프로그램의crosstab()
을 사용하거나CASE
문을 사용하여 유사한 결과를 얻을 수 있습니다. - MySQL은
PIVOT
을 기본적으로 지원하지 않지만CASE
및SUM
(또는 기타 집계)을 사용하여 데이터를 수동으로 피벗할 수 있습니다.
CASE를 사용한 예제(MySQL/PostgreSQL):
SELECT Year, SUM(CASE WHEN Quarter = 'Q1' THEN Revenue END) AS Q1, SUM(CASE WHEN Quarter = 'Q2' THEN Revenue END) AS Q2, SUM(CASE WHEN Quarter = 'Q3' THEN Revenue END) AS Q3, SUM(CASE WHEN Quarter = 'Q4' THEN Revenue END) AS Q4 FROM Sales GROUP BY Year;
PIVOT을 사용해야 하는 경우
다음과 같은 경우에 PIVOT
함수를 사용합니다.
- 여러 범주에 걸쳐 값을 비교해야 하는 경우
- 보고서 또는 대시보드에 대한 데이터 준비
- 데이터를 그룹화하고 회전하여 데이터 분석 간소화
결론
PIVOT
연산자는 더 명확하고 간결한 데이터 분석을 위해 행을 열로 변환할 수 있는 SQL의 강력한 도구입니다. 구문은 SQL 방언에 따라 다를 수 있지만 핵심 아이디어는 동일하게 유지됩니다. PIVOT
을 사용하는 방법과 시기를 이해하면 데이터 보고 및 분석 기능을 크게 향상시킬 수 있습니다.
FAQs
PIVOT은 가독성을 높이기 위해 행 기반 데이터를 열 기반 형식으로 변환합니다.
모든 SQL 데이터베이스가 PIVOT 키워드를 지원하는 것은 아니지만 CASE 문을 사용하여 유사한 결과를 얻을 수 있습니다.
여러 범주에 걸쳐 데이터를 비교하거나 요약해야 하는 경우 PIVOT을 사용합니다.
Leapcell은 백엔드 프로젝트 호스팅을 위한 최고의 선택입니다.
Leapcell은 웹 호스팅, 비동기 작업 및 Redis를 위한 차세대 서버리스 플랫폼입니다.
다국어 지원
- Node.js, Python, Go 또는 Rust로 개발하십시오.
무제한 프로젝트를 무료로 배포
- 사용량에 대해서만 지불하십시오. 요청도 없고 요금도 없습니다.
탁월한 비용 효율성
- 유휴 요금 없이 사용한 만큼 지불하십시오.
- 예: 25달러는 평균 응답 시간 60ms에서 694만 건의 요청을 지원합니다.
간소화된 개발자 경험
- 손쉬운 설정을 위한 직관적인 UI.
- 완전 자동화된 CI/CD 파이프라인 및 GitOps 통합.
- 실행 가능한 통찰력을 위한 실시간 메트릭 및 로깅.
손쉬운 확장성 및 고성능
- 고도의 동시성을 쉽게 처리하기 위한 자동 확장.
- 운영 오버헤드가 없으므로 구축에만 집중하십시오.
설명서에서 자세히 알아보십시오!
X에서 우리를 팔로우하세요: @LeapcellHQ