월본테이블 A
날짜(yyyymmdd) | 관람객1(cnt1) | 관람개2(cnt2) | 관람객3(cnt3) |
2017-07-03 | 25 | 25 | 25 |
2017-07-04 | 25 | 25 | 25 |
조회조건 yyyy ~ yyyy
출력화면
연도 | 월 | 화 | 수 | 목 | 금 | 토 |
2017 | 2017년도 1월~12월에서 월요일 관람객1,2,3 의합 | 2018년도 1월~12월에서 화요일 관람객1,2,3 의합 | 이하같음 | 이하같음 | 이하같음 | 이하같음 |
2018 | 2018년도 1월~12월에서 월요일 관람객1,2,3 의합 | 2018년도 1월~12월에서 화요일 관람객1,2,3 의합 | 이하같음 | 이하같음 | 이하같음 | 이하같음 |
뿌려지는 화면은 조회시 연도를 2016~2018년까지면 해당하는 년도만 뿌려져야되는데
쿼리정말 어려워서....ㅠㅠㅠ부탁드려요 기술자님들 ㅠㅠ
1 2 3 4 5 6 7 8 9 | SELECT TO_CHAR( YMD, 'YYYY' ) YEAR , SUM ( CASE WHEN TO_CHAR( YMD, 'D' ) = '2' THEN CNT1+CNT2+CNT3 END ) "월" -- 월 , SUM ( CASE WHEN TO_CHAR( YMD, 'D' ) = '3' THEN CNT1+CNT2+CNT3 END ) "화" -- 화 , SUM ( CASE WHEN TO_CHAR( YMD, 'D' ) = '4' THEN CNT1+CNT2+CNT3 END ) "수" -- 수 , SUM ( CASE WHEN TO_CHAR( YMD, 'D' ) = '5' THEN CNT1+CNT2+CNT3 END ) "목" -- 목 , SUM ( CASE WHEN TO_CHAR( YMD, 'D' ) = '6' THEN CNT1+CNT2+CNT3 END ) "금" -- 금 , SUM ( CASE WHEN TO_CHAR( YMD, 'D' ) = '7' THEN CNT1+CNT2+CNT3 END ) "토" -- 토 FROM T GROUP BY TO_CHAR( YMD, 'YYYY' ) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | SELECT yyyy , SUM (DECODE(d, 1, cnt)) 일 , SUM (DECODE(d, 2, cnt)) 월 , SUM (DECODE(d, 3, cnt)) 화 , SUM (DECODE(d, 4, cnt)) 수 , SUM (DECODE(d, 5, cnt)) 목 , SUM (DECODE(d, 6, cnt)) 금 , SUM (DECODE(d, 7, cnt)) 토 FROM ( SELECT SUBSTR(dt, 1, 4) yyyy , TO_CHAR(TO_DATE(dt, 'yyyy-mm-dd' ), 'd' ) d , cnt1 + cnt2 + cnt3 cnt FROM t WHERE dt BETWEEN :s_yyyy || '-01-01' AND :e_yyyy || '-12-31' ) GROUP BY yyyy ORDER BY yyyy ; |