> 데이터 베이스 > MySQL 튜토리얼 > UNION ALL 및 집계를 사용하여 MySQL에서 피벗 테이블을 시뮬레이션하는 방법은 무엇입니까?

UNION ALL 및 집계를 사용하여 MySQL에서 피벗 테이블을 시뮬레이션하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-09 15:16:42
원래의
210명이 탐색했습니다.

How to Simulate Pivot Tables in MySQL Using UNION ALL and Aggregation?

MySQL에서 피벗 테이블 시뮬레이션: UNION ALL 및 집계 함수 사용

피벗 테이블은 데이터 분석 및 보고서 생성에서 핵심적인 역할을 하며, 열 형식 데이터를 행 기반 데이터로 변환하여 더욱 간결하고 통찰력 있는 시각화를 구현합니다. MySQL은 UNPIVOT 및 PIVOT 함수를 직접 제공하지 않지만 UNION ALL 및 집계 함수를 교묘하게 결합하여 유사한 기능을 구현할 수 있습니다.

데이터 피벗 해제

피벗 테이블의 첫 번째 단계는 데이터를 확장하거나 보다 유연한 형식으로 변환하는 것입니다. 여기에는 데이터의 각 열에 대해 여러 행을 만드는 작업이 포함됩니다. 여기서 각 행은 열과 해당 값을 나타냅니다. 이를 달성하기 위해 UNION ALL 연산자를 사용할 수 있습니다:

SELECT id, month, col1 AS value, 'col1' AS descrip
FROM yourTable
UNION ALL
SELECT id, month, col2 AS value, 'col2' AS descrip
FROM yourTable
UNION ALL
SELECT id, month, col3 AS value, 'col3' AS descrip
FROM yourTable
UNION ALL
SELECT id, month, col4 AS value, 'col4' AS descrip
FROM yourTable;
로그인 후 복사

이 쿼리는 다음 결과를 생성합니다.

idmonthvaluedescrip
101JanAcol1
102FebCcol1
101JanBcol2
102FebAcol2
101JanNULLcol3
102FebGcol3
101JanBcol4
102FebEcol4

데이터 피봇팅 확대

데이터가 확장되면 집계 함수와 CASE 문을 사용하여 데이터를 피벗하여 원하는 보고서 형식을 만들 수 있습니다.

SELECT descrip,
  MAX(CASE WHEN month = 'Jan' THEN value ELSE 0 END) AS jan,
  MAX(CASE WHEN month = 'Feb' THEN value ELSE 0 END) AS feb
FROM (
    SELECT id, month, col1 AS value, 'col1' AS descrip
    FROM yourTable
    UNION ALL
    SELECT id, month, col2 AS value, 'col2' AS descrip
    FROM yourTable
    UNION ALL
    SELECT id, month, col3 AS value, 'col3' AS descrip
    FROM yourTable
    UNION ALL
    SELECT id, month, col4 AS value, 'col4' AS descrip
    FROM yourTable
) AS src
GROUP BY descrip;
로그인 후 복사

위 쿼리는 다음과 같은 결과를 생성합니다.

descrip jan feb
col1 A C
col2 B A
col3 0 G
col4 B E

이 결과는 필수 보고서 형식과 일치합니다. 이러한 기술을 통해 우리는 MySQL에서 피벗 테이블 기능을 효과적으로 구현하고 열 기반 데이터를 행 기반 보고서로 쉽게 변환하여 보다 효율적인 분석 및 보고가 가능합니다.

위 내용은 UNION ALL 및 집계를 사용하여 MySQL에서 피벗 테이블을 시뮬레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿