SELECT DATE_FORMAT(ad_opendate, '%Y') AS year, ad_content AS ad_content, FORMAT(ad_price, 0) AS ad_price FROM tbladlist WHERE 1 = 1 AND SUBSTRING(ad_opendate, 1, 4) BETWEEN '2012' AND '2019' //연도별 기간 선택 가능;
이런 쿼리로 나온 결과가
year | ad_content | ad_price |
2012 | AAA학원 | 50000 |
2012 | XXX은행 | 100000 |
2013 | AAA학원 | 60000 |
2015 | AAA학원 | 20000 |
이렇습니다.
이걸 다시
ad_content | 2012 | 2013 | 2014 | 2015 |
AAA학원 | 50000 | 60000 | 20000 | |
xxx은행 | 100000 | |||
... | ... | ... | ... | ... |
... | ... | ... | ... |
이것 처럼 ad_content별 연도별 ad_price 합계를 구하고자 합니다.;;
쿼리 좀 알려주실 수 있으신가요?
실재 개발할때는 in 안에 매번 달라질 수 있기 때문에 년도는 위 SQL문장에서 조회한 year를 가지고 dynamic하게 넣어 줘야 합니다. Mibatis를 사용한다면 ${year} 이렇게 하면 되구요. SELECT DISTINCT YEAR FROM TABLE_NM ORDER BY YEAR; WITH V_AD (year, ad_content, ad_price) AS ( SELECT '2012', 'AAA학원', 50000 FROM DUAL UNION ALL SELECT '2012', 'XXX은행', 10000 FROM DUAL UNION ALL SELECT '2013', 'AAA학원', 6000 FROM DUAL UNION ALL SELECT '2015', 'AAA학원', 2000 FROM DUAL ) SELECT * FROM V_AD PIVOT (SUM(ad_price) FOR year IN ('2012', '2013', '2014', '2015'))