MySQL에서 간혹가다 세로(종)로 쌓여있는 데이터를 가로(횡)으로 전환하여 검색결과를 출력해야 할때가 있습니다.

(특히 게시판 경우 빈번합니다.)


하지만 세로를 가로로 돌리기란 여간 복잡합니다.

특히나, 숫자형식으로된 세로로 쌓인 데이터는 비교적 가로로 데이터를 출력하기 쉬우나 문자로된 데이터는 여간 힘듭니다.


오늘은 문자 데이터를 세로를 가로로 돌리는 쿼리문을 포스팅해보겠습니다.


 1. 샘플 데이터


1
SELECT * FROM 동물_TABLE;
cs


 동물키

 종류

이름 

 그룹1

 곤충

 메뚜기

 그룹1

 포유류

코끼리

 그룹1

 양서류

개구리

 그룹2

 곤충

 사마귀

 그룹2

 포유류

 기린

 그룹2

 양서류

 도룡농


기본으로 그룹을 묶을수있는 키가 필요 합니다.

먼저 샘플데이터는, 같은 종류끼리 가로(횡)으로 정렬을 목적으로 하겠습니다.



 2. 결과 : 가로횡 SELECT 쿼리


1
2
3
4
5
6
7
8
9
SELECT
    동물키
    , MAX(CASE WHEN 종류 = '곤충' THEN 이름 END) AS 곤충
    , MAX(CASE WHEN 종류 = '포유류' THEN 이름 END) AS 포유류
    , MAX(CASE WHEN 종류 = '양서류' THEN 이름 END) AS 양서류
FROM (    
        SELECT * FROM 동물_TABLE
     ) T
GROUP BY 동물키;
cs


 동물키

 곤충

포유류

양서류

 그룹1

 메뚜기

코끼리

개구리 

 그룹2

사마귀

기린

도룡농


위와 같은 결과를 얻을수 있습니다.

CASE 문과 MAX값으로 각 그룹의 최대값을 가져와 보여주는 방식입니다.

이렇게 쉬운방식으로 세로(종) 데이터를 가로(횡) 으로 출력 할 수 있습니다.



반응형

+ Recent posts