mysql문의 드립니다. 현재 데이터는 아래 형태입니다.
+------+----------+-------+ | name | date | score | +------+------------------+ | Bob | 20160101 | 75 | | Bob | 20160101 | 77 | | Bob | 20160102 | 78 | | Bob | 20160102 | 80 | | Sue | 20160103 | 90 | | Sue | 20160104 | 97 | | Sue | 20160106 | 98 | | Sue | 20160103 | 99 | ... ...
| kok | 20160101 | 99 |
+------+----------+-------+
데이터는 약 100만건 정도 입니다.
위형태에서 아래 구조데이터를 뽑아야 합니다.
+------+----------------+--------------+-------------+-------------+-------------+ | name | 20160101(sum) | 20160102(sum)| 20160103 | 20160104 |20160105(sum)| +------+----------------+--------------+-------------+-------------+-------------+ | Bob | 152 | 158 | 0 | 0 | 0 | | Sue | 0 | 0 | 90 | 97 | 0 | | kok | 99 | 0 | 0 | 0 | 0 | +------+----------------+--------------+-------------+-------------+-------------+
name의 경우에는 group by를 이용하면 될꺼같은데
가로 날자 컬럼의 경우에는 항상 변동이 됩니다. 그래서 다이나믹쿼리를 이용하여
컬럼은 반복하려 합니다.
어떻게 뽑으면 가능할지요??
SELECT name , IFNULL(SUM(CASE date WHEN '20160101' THEN score END), 0) "20160101" , IFNULL(SUM(CASE date WHEN '20160102' THEN score END), 0) "20160102" , IFNULL(SUM(CASE date WHEN '20160103' THEN score END), 0) "20160103" , IFNULL(SUM(CASE date WHEN '20160104' THEN score END), 0) "20160104" , IFNULL(SUM(CASE date WHEN '20160105' THEN score END), 0) "20160105" FROM t WHERE date BETWEEN '20160101' AND '20160105' GROUP BY name ;