[MySQL] mysql dynamic rows to columns (세로를 가로로 출력) > db

본문 바로가기
사이트 내 전체검색

db

[MySQL] mysql dynamic rows to columns (세로를 가로로 출력)

페이지 정보

작성자 서방님 댓글 0건 조회 219회 작성일 17-04-17 09:33

본문

event_form


 

event_users
 


위와 같이 두 테이블이 있을때,   세로를 가로로 출력하고 싶을 때 

 

SQL

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(title = ''',
      title,
      ''', answer, NULL)) AS ',
      title
    )
  ) INTO @sql
FROM event_users;
 
SET @sql = CONCAT('SELECT event_number, answer_id,
                   ', @sql, ' FROM event_users                 
                   GROUP BY event_number');
 
PREPARE stmt FROM @SQL;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
cs

 

위와 같은 쿼리를 수행하게 되면

 



event_number를 중심으로 원하는 값만(event_number answer_id, @sql) 출력한다. 



SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'MAX(IF(title = ''',
      title,
      ''', answer, NULL)) AS ',
      title
    )
  ) INTO @sql
FROM event_users;

 

@sql은 위와같으므로 title 개수 만큼 필드를 출력 (위의 테이블 경우엔 4개 - (1번,2번,3번,4번) )

댓글목록

등록된 댓글이 없습니다.

회원로그인

접속자집계

오늘
82
어제
225
최대
1,347
전체
154,841
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.