> 데이터 베이스 > MySQL 튜토리얼 > 열을 행으로 변환하기 위해 MySQL에서 데이터를 피벗 해제 및 피벗하는 방법은 무엇입니까?

열을 행으로 변환하기 위해 MySQL에서 데이터를 피벗 해제 및 피벗하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-09 15:07:41
원래의
852명이 탐색했습니다.

How to Unpivot and Pivot Data in MySQL to Transform Columns into Rows?

MySQL 데이터 피벗 및 피벗: 열을 행으로 변환

여러 열(col1, col2, col3 등)이 있는 테이블이 있고 이를 피벗 테이블 형식으로 변환하여 열이 아닌 행 단위로 데이터를 표시한다고 가정해 보겠습니다.

MySQL에서 이를 달성하려면 먼저 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>
로그인 후 복사

UNION ALL 쿼리 결과:

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

다음으로 UNION ALL 쿼리를 하위 쿼리로 래핑하여 데이터를 피벗합니다. 집계 함수 GROUP BYCASE 문을 사용하여 피벗되지 않은 관점의 구조를 원하는 관점 형식으로 변환합니다.

<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에서 데이터를 피벗 해제 및 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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