1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | WITH board AS ( SELECT '2020-12-01' createdate, 'StarCraft' type, '스타는 재미있다' content FROM dual UNION ALL SELECT '2020-12-01' , 'StarCraft' , '스타2도 재미있다' FROM dual UNION ALL SELECT '2020-12-03' , 'LOL' , '롤은 재미있다' FROM dual UNION ALL SELECT '2020-12-05' , 'StarCraft' , '스타는 재미없다' FROM dual UNION ALL SELECT '2020-12-07' , 'LOL' , '롤은 재미없다' FROM dual ) SELECT * FROM ( SELECT createdate, type, content , ROW_NUMBER() OVER(PARTITION BY type, createdate ORDER BY 1) rn FROM board WHERE createdate BETWEEN '2020-12-01' AND '2020-12-07' ) PIVOT ( MIN (content) FOR createdate IN ( '2020-12-01' "2020-12-01" , '2020-12-02' "2020-12-02" , '2020-12-03' "2020-12-03" , '2020-12-04' "2020-12-04" , '2020-12-05' "2020-12-05" , '2020-12-06' "2020-12-06" , '2020-12-07' "2020-12-07" ) ) ORDER BY type, rn ; |
가변 열을 쿼리로 구현할 수는 없습니다.
고정 개수의 고정값에 대해서만 가능합니다.
가변 열로 하려면 동적쿼리로 구현하셔야 합니다.
다만 기간이 한달 또는 일주일 형태로 고정된다면?
한달의 경우 일자로 01~31 고정 형태로 구현 가능하고
일주일의 경우 요일로 일월화수목금토 고정 형태로 구현 가능합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | WITH board AS ( SELECT '2020-12-01' createdate, 'StarCraft' type, '스타는 재미있다' content FROM dual UNION ALL SELECT '2020-12-01' , 'StarCraft' , '스타2도 재미있다' FROM dual UNION ALL SELECT '2020-12-03' , 'LOL' , '롤은 재미있다' FROM dual UNION ALL SELECT '2020-12-05' , 'StarCraft' , '스타는 재미없다' FROM dual UNION ALL SELECT '2020-12-07' , 'LOL' , '롤은 재미없다' FROM dual ) SELECT * FROM ( SELECT SUBSTR(createdate, 9, 2) dd , type, content , ROW_NUMBER() OVER(PARTITION BY type, createdate ORDER BY 1) rn FROM board WHERE createdate LIKE '2020-12%' ) PIVOT ( MIN (content) FOR dd IN ( '01' "01" , '02' "02" , '03' "03" , '04' "04" , '05' "05" , '06' "06" , '07' "07" , '08' "08" , '09' "09" , '10' "10" , '11' "11" , '12' "12" , '13' "13" , '14' "14" , '15' "15" , '16' "16" , '17' "17" , '18' "18" , '19' "19" , '20' "20" , '21' "21" , '22' "22" , '23' "23" , '24' "24" , '25' "25" , '26' "26" , '27' "27" , '28' "28" , '29' "29" , '30' "30" , '31' "31" ) ) ORDER BY type, rn ; |