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