MYSQL 동적쿼리 질문 드립니다~ 0 2 1,190

by 진짜강동원 [SQL Query] MYSQL 동적쿼리 연도별 [2019.09.06 18:01:47]


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 합계를 구하고자 합니다.;;

쿼리 좀 알려주실 수 있으신가요?

 

by 농부지기 [2019.09.09 09:16:07]
실재 개발할때는 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'))

 


by 진짜강동원 [2019.09.10 09:40:43]

알려주신거랑 다르지만 해결은 잘 했습니다~^^ 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입