[SQL] 행에 열을 변환 MYSQL (피벗 테이블)
SQL행에 열을 변환 MYSQL (피벗 테이블)
나는이 같은 테이블이
+---+-----+----+----+----+----+
|id |month|col1|col2|col3|col4|
+---+-----+----+----+----+----+
|101|Jan |A |B |NULL|B |
+---+-----+----+----+----+----+
|102|feb |C |A |G |E |
+---+-----+----+----+----+----+
그리고이 같은 보고서를 만들려면
+----+---+---+
|desc|jan|feb|
+----+---+---+
|col1|A |C |
+----+---+---+
|col2|B |A |
+----+---+---+
|col3|0 |G |
+----+---+---+
|Col4|B |E |
+----+---+---+
이와 캔 사람의 도움?
해결법
-
==============================
1.당신이해야 할 것은 데이터 피벗 해제, 처음으로 다음을 돌리십시오. 당신이 UNPIVOT에 대한 UNION ALL 쿼리 및 피벗에 대한 사례와 집계 함수를 사용하여 복제해야합니다 그래서 그러나 불행하게도 MySQL은 이러한 기능이 없습니다.
당신이해야 할 것은 데이터 피벗 해제, 처음으로 다음을 돌리십시오. 당신이 UNPIVOT에 대한 UNION ALL 쿼리 및 피벗에 대한 사례와 집계 함수를 사용하여 복제해야합니다 그래서 그러나 불행하게도 MySQL은 이러한 기능이 없습니다.
UNPIVOT 또는 UNION ALL 조각 등 당신의 COL1, COL2에서 데이터를 받아 여러 행으로 변합니다 :
select id, month, col1 value, 'col1' descrip from yourtable union all select id, month, col2 value, 'col2' descrip from yourtable union all select id, month, col3 value, 'col3' descrip from yourtable union all select id, month, col4 value, 'col4' descrip from yourtable
데모와 SQL 바이올린을 참조하십시오.
결과:
| 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 |
그런 다음 집계하고 원하는 형식으로이 변환하는 사례를 적용하는 하위 쿼리에이 포장 :
select descrip, max(case when month = 'jan' then value else 0 end) jan, max(case when month = 'feb' then value else 0 end) feb from ( select id, month, col1 value, 'col1' descrip from yourtable union all select id, month, col2 value, 'col2' descrip from yourtable union all select id, month, col3 value, 'col3' descrip from yourtable union all select id, month, col4 value, 'col4' descrip from yourtable ) src group by descrip
데모와 SQL 바이올린을 참조하십시오
결과는 다음과 같습니다
| DESCRIP | JAN | FEB | ----------------------- | col1 | A | C | | col2 | B | A | | col3 | 0 | G | | col4 | B | E |
from https://stackoverflow.com/questions/13944417/mysql-convert-column-to-row-pivot-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 저장 프로 시저 내에서 즉시 실행은 권한이 부족 오류를주고 계속 (0) | 2020.05.02 |
---|---|
[SQL] 열 이름 제공된 값의 개수 나 테이블 정의와 일치하지 않습니다 (0) | 2020.05.02 |
[SQL] JDBC를 사용하는 경우 SQL 문에 대한 로깅을 설정하는 방법 (0) | 2020.05.02 |
[SQL] PostgreSQL의 행으로 변환 열? 바꾸어 놓다? (0) | 2020.05.02 |
[SQL] 데이터베이스 EAV의 장점 / 단점 및 대안 (0) | 2020.05.02 |