집 >데이터 베이스 >MySQL 튜토리얼 >UNION ALL 및 집계를 사용하여 MySQL에서 피벗 테이블을 시뮬레이션하는 방법은 무엇입니까?
MySQL에서 피벗 테이블 시뮬레이션: UNION ALL 및 집계 함수 사용
피벗 테이블은 데이터 분석 및 보고서 생성에서 핵심적인 역할을 하며, 열 형식 데이터를 행 기반 데이터로 변환하여 더욱 간결하고 통찰력 있는 시각화를 구현합니다. MySQL은 UNPIVOT 및 PIVOT 함수를 직접 제공하지 않지만 UNION ALL
및 집계 함수를 교묘하게 결합하여 유사한 기능을 구현할 수 있습니다.
데이터 피벗 해제
피벗 테이블의 첫 번째 단계는 데이터를 확장하거나 보다 유연한 형식으로 변환하는 것입니다. 여기에는 데이터의 각 열에 대해 여러 행을 만드는 작업이 포함됩니다. 여기서 각 행은 열과 해당 값을 나타냅니다. 이를 달성하기 위해 UNION ALL
연산자를 사용할 수 있습니다:
<code class="language-sql">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;</code>
이 쿼리는 다음 결과를 생성합니다.
id | month | value | descrip |
---|---|---|---|
101 | Jan | A | col1 |
102 | Feb | C | col1 |
101 | Jan | B | col2 |
102 | Feb | A | col2 |
101 | Jan | NULL | col3 |
102 | Feb | G | col3 |
101 | Jan | B | col4 |
102 | Feb | E | col4 |
데이터 피봇팅 확대
데이터가 확장되면 집계 함수와 CASE
문을 사용하여 데이터를 피벗하여 원하는 보고서 형식을 만들 수 있습니다.
<code class="language-sql">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;</code>
위 쿼리는 다음과 같은 결과를 생성합니다.
descrip | jan | feb |
---|---|---|
col1 | A | C |
col2 | B | A |
col3 | 0 | G |
col4 | B | E |
이 결과는 필수 보고서 형식과 일치합니다. 이러한 기술을 통해 우리는 MySQL에서 피벗 테이블 기능을 효과적으로 구현하고 열 기반 데이터를 행 기반 보고서로 쉽게 변환하여 보다 효율적인 분석 및 보고가 가능합니다.
위 내용은 UNION ALL 및 집계를 사용하여 MySQL에서 피벗 테이블을 시뮬레이션하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!