오라클을 사용할때는 어렵게 구현 했던것을 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;

[출처] MySQL (or MariaDB) 에서 row 데이터를 column 으로 변경하기.|작성자 동쪽새

'프로그래밍 > mysql' 카테고리의 다른 글

[MYSQL] CASE 사용법  (0) 2019.03.21
[MYSQL] explain 처럼 자르기  (0) 2019.03.21
[MYSQL] 날짜관련  (0) 2019.03.21
[MYSQL] Replication 관리방법  (0) 2019.03.21
[MYSQL] UPDATE 병렬처리 방법  (0) 2019.03.21

+ Recent posts