프로그래밍/mysql
MySQL (or MariaDB) 에서 row 데이터를 column 으로 변경하기
verdana
2019. 4. 2. 14:04
오라클을 사용할때는 어렵게 구현 했던것을 MySQL을 사용하면서 아주 쉽게 구현이 가능했다.
Row Data:+-----------+----------+ | colHeader | value | +-----------+----------+ | Header1 | value 1 | +-----------+----------+ | Header2 | value 2 | +-----------+----------+ | Header3 | value 3 | +-----------+----------+Output:
+-----------+-----------+-----------+ | Header1 | header2 | Header3 | +-----------+-----------+-----------+ | Value 1 | value 2 | Value 3 | +-----------+-----------+-----------+방법1 원시적인 방법이며, 조회속도 자체가 느리다.
SELECT t1.value AS `Header1`, t2.value AS `Header2`, t3.value AS `Header3` FROM (SELECT * FROM table1 WHERE colHeader='Header1') t1 JOIN (SELECT * FROM table1 WHERE colHeader='Header2') t2 JOIN (SELECT * FROM table1 WHERE colHeader='Header3') t3;방법2 깔끔하게 해결 된다.
SELECT ID, GROUP_CONCAT(if(colHeader = 'Header 1', value, NULL)) AS 'Header 1', GROUP_CONCAT(if(colHeader = 'Header 2', value, NULL)) AS 'Header 2', GROUP_CONCAT(if(colHeader = 'Header 3', value, NULL)) AS 'Header 3' FROM myTable GROUP BY ID;