[SQL] 행에 열 및 열로 MySQL의 트랜스 행 [중복]
SQL행에 열 및 열로 MySQL의 트랜스 행 [중복]
내가 행에 컬럼과 컬럼에 행을 전치에 문제가 있습니다. 나는 열 또는 열 그냥 전치 행 행 할 경우 그렇게 할 수 있습니다.
데이터를이 내 테이블
UNIT|JAN|FEB|MAR|APR|MEI|JUN
CS-1|100|200|300|400|500|600
CS-2|111|222|333|444|555|666
CS-3|331|123|423|923|918|123
나는 다음과 같은 출력을 좀하고 싶습니다
MONTH|CS-1|CS-2|CS-3
JAN |100 |111 |331
FEB |200 |222 |123
MAR |300 |333 |423
기타..
누구를 알고 어떻게이 일을? 매우 감사합니다!
해결법
-
==============================
1.당신은이 방법을 수행 할 수 있습니다
당신은이 방법을 수행 할 수 있습니다
SELECT month, MAX(CASE WHEN unit = 'CS-1' THEN value END) `CS-1`, MAX(CASE WHEN unit = 'CS-2' THEN value END) `CS-2`, MAX(CASE WHEN unit = 'CS-3' THEN value END) `CS-3` FROM ( SELECT unit, month, CASE month WHEN 'JAN' THEN jan WHEN 'FEB' THEN feb WHEN 'MAR' THEN mar WHEN 'APR' THEN apr WHEN 'MAY' THEN may WHEN 'JUN' THEN jun END value FROM table1 t CROSS JOIN ( SELECT 'JAN' month UNION ALL SELECT 'FEB' UNION ALL SELECT 'MAR' UNION ALL SELECT 'APR' UNION ALL SELECT 'MAY' UNION ALL SELECT 'JUN' ) c ) q GROUP BY month ORDER BY FIELD(month, 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN')
산출:
| MONTH | CS-1 | CS-2 | CS-3 | |-------|------|------|------| | JAN | 100 | 111 | 331 | | FEB | 200 | 222 | 123 | | MAR | 300 | 333 | 423 | | APR | 400 | 444 | 923 | | MAY | 500 | 555 | 918 | | JUN | 600 | 666 | 123 |
여기 SQLFiddle 데모입니다
from https://stackoverflow.com/questions/19019453/mysql-transpose-row-into-column-and-column-into-row by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 날짜 범위에있는 모든 날짜 SQL 서버에서 가져 오기 (0) | 2020.06.12 |
---|---|
[SQL] 외래 키와 기본 키에 포스트 그레스 및 인덱스 (0) | 2020.06.12 |
[SQL] 분산 트랜잭션 오류? (0) | 2020.06.12 |
[SQL] 어떻게 Google BigQuery에서 결석 날짜를 차지 최신 시리즈를 생성? (0) | 2020.06.12 |
[SQL] 어떻게 선택적 매개 변수 SQL 쿼리를 처리하기 위해? (0) | 2020.06.12 |