행은 관측값을 나타내고 열은 속성을 나타내는 데이터 테이블의 데이터를 관측값이 열이 되는 테이블로 변환하는 것은 매우 유용한 데이터 조작 기술입니다. 이 문서에서는 MySQL에서 이 변환을 구현하는 방법을 안내합니다.
대상 피벗 테이블에서 y 값(결과 테이블 행)과 x 값(결과 테이블 열)이 될 열을 식별합니다. 이 예에서 "hostid"는 y 값이 되고 "itemname"은 x 값이 됩니다.
각 x 값에 대해 기본 테이블에 새 열을 추가합니다. CASE 표현식을 사용하여 itemname을 기반으로 해당 항목 값으로 이러한 열을 채웁니다.
y 값 열을 기준으로 확장 테이블을 그룹화하고 적절한 함수(예: SUM)를 사용하여 x 값 열을 집계합니다.
집계표의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!