>데이터 베이스 >MySQL 튜토리얼 >MySQL 열 데이터를 행 기반 피벗 테이블로 변환하는 방법은 무엇입니까?

MySQL 열 데이터를 행 기반 피벗 테이블로 변환하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-09 15:02:43180검색

How to Transform MySQL Column Data into a Row-Based Pivot Table?

MySQL 열 데이터를 행 형식(피벗 테이블)으로 변환

이 문서에서는 다중 열 데이터가 포함된 MySQL 테이블을 행 및 열 형식 데이터로 변환하는 방법을 설명합니다. 결과 구조를 피벗 테이블이라고 하며 데이터에 대한 간결하면서도 포괄적인 보기를 제공합니다.

문제 설명:

여러 열이 있는 테이블이 있는데, 각 열은 데이터 카테고리를 나타냅니다. 목표는 이를 피벗 테이블 형식으로 변환하는 것입니다. 여기서 행은 카테고리(col1, col2, col3, col4)를 나타내고 열은 월( 1월, 2월).

솔루션 프레임워크:

MySQL에서 이 변환을 구현하려면 다음 2단계 프로세스를 따라야 합니다.

반관점(UNION ALL):

  1. 입력 열(col1, col2 등)을 별도의 행으로 분할하여 카테고리에 대한 새 열('설명')과 해당 값에 대한 또 다른 열을 만듭니다. UNION ALL 연산자를 사용하여 이러한 행을 단일 테이블로 결합합니다.

관점(집계 및 CASE):

  1. 언피벗 테이블에 MAX()와 같은 집계 함수를 적용하고 CASE 문을 사용하여 어떤 값이 어느 달에 속하는지 확인합니다. 이를 통해 필수 열(1월, 2월)을 생성할 수 있습니다.

구현된 쿼리:

반관점(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>

관점(집계 및 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 source
GROUP BY
  descrip;</code>

결과:

이 쿼리는 입력 테이블을 피벗 테이블 형식으로 변환합니다.

DESCRIP Jan Feb
col1 A C
col2 B A
col3 0 G
col4 B E

위 내용은 MySQL 열 데이터를 행 기반 피벗 테이블로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.