SELECT MAX(DECODE(D, 1, LPAD(DD, 2, '00')))DAYS1,
MAX(DECODE(D, 2, LPAD(DD, 2, '00')))DAYS2,
MAX(DECODE(D, 3, LPAD(DD, 2, '00')))DAYS3,
MAX(DECODE(D, 4, LPAD(DD, 2, '00')))DAYS4,
MAX(DECODE(D, 5, LPAD(DD, 2, '00')))DAYS5,
MAX(DECODE(D, 6, LPAD(DD, 2, '00')))DAYS6,
MAX(DECODE(D, 7, LPAD(DD, 2, '00')))DAYS7
FROM (SELECT ROWNUM DD,
TO_CHAR(TO_DATE(&as_day||LPAD(ROWNUM, 2, '00')), 'D') D,
TO_CHAR(TO_DATE(&as_day||LPAD(ROWNUM, 2, '00')), 'IW') W
FROM DUAL
CONNECT BY LEVEL <= TO_CHAR(LAST_DAY(TO_DATE(&as_day, 'YYYYMM')), 'DD') )
GROUP BY W
ORDER BY 1 NULLS FIRST
년/월을 입력받아 해당하는 달에 날짜를 구하는 쿼리를 짜봤습니다. ((검색엔진도움을받으며....))
여기서 해당하는날짜가 몇번째주인지 구하는
TO_CHAR(TO_DATE(&as_day||LPAD(ROWNUM, 2, '00')), 'IW') 이부분에서
2014년 8월이라고 가정했을때 8월달은 총6주여야되는데 5주로표시됩니다.
그래서 TO_CHAR(TO_DATE(&as_day||LPAD(ROWNUM, 2, '00')), 'IW')+1 이렇게 +1을해주니
달력상과같이 재대로 6주가표시되더군요 왜그런지 이유를모르겠습니다
그리고 IW,WW랑 어떤차이가있는지 정확히 이해가안되네요ㅠ