반응형
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
반응형
'개발 > Mysql' 카테고리의 다른 글
[Mysql] SQL 오류 (1690): BIGINT UNSIGNED value is out of range in 에러 발생시 (0) | 2020.07.20 |
---|---|
[Mysql] 나이 계산 (0) | 2020.05.29 |
[Mysql] WITH ROLLUP 사용시 SQL 오류 (1055): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column (0) | 2020.05.27 |
[Mysql] 날짜,시간 차이 계산 (0) | 2020.05.27 |
[Mysql] left join group by null 혹은 0값도 출력 (0) | 2020.05.26 |