> 데이터 베이스 > MySQL 튜토리얼 > MySQL에서 행을 열로 피벗하는 방법은 무엇입니까?

MySQL에서 행을 열로 피벗하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2025-01-25 11:42:11
원래의
251명이 탐색했습니다.

How to Pivot Rows into Columns in MySQL?

MySQL 데이터 테이블의 행과 열 변환에 대한 자세한 설명

소개

행은 관측값을 나타내고 열은 속성을 나타내는 데이터 테이블의 데이터를 관측값이 열이 되는 테이블로 변환하는 것은 매우 유용한 데이터 조작 기술입니다. 이 문서에서는 MySQL에서 이 변환을 구현하는 방법을 안내합니다.

1단계: 대상 열 선택

대상 피벗 테이블에서 y 값(결과 테이블 행)과 x 값(결과 테이블 열)이 될 열을 식별합니다. 이 예에서 "hostid"는 y 값이 되고 "itemname"은 x 값이 됩니다.

2단계: 기본 테이블을 확장하여 추가 열 추가

각 x 값에 대해 기본 테이블에 새 열을 추가합니다. CASE 표현식을 사용하여 itemname을 기반으로 해당 항목 값으로 이러한 열을 채웁니다.

3단계: 확장 테이블 그룹화 및 집계

y 값 열을 기준으로 확장 테이블을 그룹화하고 적절한 함수(예: SUM)를 사용하여 x 값 열을 집계합니다.

4단계: 꾸미기(선택 사항)

집계표의 NULL 값을 선택한 중립 값(예: 0)으로 대체하면 시각적으로 더 명확한 결과를 얻을 수 있습니다.

다음 기본 테이블을 고려하세요.

hostid itemname itemvalue
1 A 10
1 B 3
2 A 9
2 C 40

피벗 테이블 만들기

<code class="language-sql">-- 步骤 1:选择目标列
SELECT hostid, itemname, itemvalue
FROM history;

-- 步骤 2:扩展基础表添加额外列
CREATE VIEW history_extended AS
SELECT
  history.*,
  CASE WHEN itemname = "A" THEN itemvalue END AS A,
  CASE WHEN itemname = "B" THEN itemvalue END AS B,
  CASE WHEN itemname = "C" THEN itemvalue END AS C
FROM history;

-- 步骤 3:分组和聚合扩展表
CREATE VIEW history_itemvalue_pivot AS
SELECT
  hostid,
  SUM(A) AS A,
  SUM(B) AS B,
  SUM(C) AS C
FROM history_extended
GROUP BY hostid;

-- 步骤 4:美化
CREATE VIEW history_itemvalue_pivot_pretty AS
SELECT 
  hostid, 
  COALESCE(A, 0) AS A, 
  COALESCE(B, 0) AS B, 
  COALESCE(C, 0) AS C 
FROM history_itemvalue_pivot;

-- 最终结果
SELECT *
FROM history_itemvalue_pivot_pretty;</code>
로그인 후 복사

결과

hostid A B C
1 10 3 0
2 9 0 40

이 예에서는 행을 열로 변환하기 위해 MySQL에서 테이블의 형태를 효율적으로 변경하는 방법을 보여줍니다.

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

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