반응형

Mysql 동적 피벗 테이블로 조회

동적으로 열의 이름을 지정하여 조회하는 방법.

예시의 결과는 아래와 같다.

 

 

쿼리는 아래와 같다.

SET sql_mode = '';
SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'count(case when 행정동코드 = ''',
      행정동코드 ,
      ''' then 1 end) AS ''',
      행정동이름
      ,''''
    )
  ) INTO @sql
FROM 행정동테이블;
;


SET @sql = CONCAT('SELECT IFNULL(행정동이름,''합계'') AS 지역, ', @sql, ',COUNT(*) AS 합계 
FROM 데이터테이블 A
LEFT JOIN 행정동테이블 B 
ON A.행정동코드 = B.행정동코드
group by 행정동이름
WITH ROLLUP
');

select @sql;

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

 

쿼리 작성시에 GROUP_CONCAT 의 길이가 짧아서 에러가 나는 경우가 있다.

 

이럴 경우

 

방법1.

my.conf 에서

[mysqld] 

group_concat_max_len = 50240;

추가

 

방법2.

SET @@ group_concat_max_len = 50240;

 

 

 

 

oracle 피벗 테이블 방법

https://wwwnghks.tistory.com/159

 

반응형

+ Recent posts