ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ORACLE] CONNECT BY LEVEL 활용 <달력>
    DATABASE 2018. 11. 5. 13:16
    • 현재 달의 달력 표현

    SELECT 

    max(decode(to_char(sday+cnt-1,'d'),1,A.cnt)) 일,

    max(decode(to_char(sday+cnt-1,'d'),2,A.cnt)) 월,

    max(decode(to_char(sday+cnt-1,'d'),3,A.cnt)) 화,

    max(decode(to_char(sday+cnt-1,'d'),4,A.cnt)) 수,

    max(decode(to_char(sday+cnt-1,'d'),5,A.cnt)) 목,

    max(decode(to_char(sday+cnt-1,'d'),6,A.cnt)) 금,

    max(decode(to_char(sday+cnt-1,'d'),7,A.cnt)) 토

    FROM (select level cnt,

        trunc(to_date(SYSDATE),'mm') sday 

              from dual 

              connect by level<=LAST_DAY(to_date(SYSDATE))-trunc(to_date(SYSDATE),'mm')+1) A

    group by trunc(sday+cnt-1,'d')

    order by 7;



    ** to_char(sday+cnt-1,'d')

       주중의 일을 1~7로 표시 (일요일 : 1 ~ 토요일 : 7 )


    ** LAST_DAY(to_date(SYSDATE))

       현재날의 마지막 날 반환


    ** trunc(to_date(SYSDATE),'mm'

       YYYY년 MM월 01일


    ** trunc(sday+cnt-1,'d')

       가장최근에 지난 요일로 반환


    ** order by 7

        7번째 컬럼 기준(토요일 컬럼)으로 정렬 ( 디폴트: 오름차순 ASC)

        

    SELECT

        MIN(DECODE( TO_CHAR(DATES,'D'), 1, TO_CHAR(DATES, 'DD'))) 일,

        MIN(DECODE( TO_CHAR(DATES,'D'), 2, TO_CHAR(DATES, 'DD'))) 월,

        MIN(DECODE( TO_CHAR(DATES,'D'), 3, TO_CHAR(DATES, 'DD'))) 화,

        MIN(DECODE( TO_CHAR(DATES,'D'), 4, TO_CHAR(DATES, 'DD'))) 수,

        MIN(DECODE( TO_CHAR(DATES,'D'), 5, TO_CHAR(DATES, 'DD'))) 목,

        MIN(DECODE( TO_CHAR(DATES,'D'), 6, TO_CHAR(DATES, 'DD'))) 금,

        MIN(DECODE( TO_CHAR(DATES,'D'), 7, TO_CHAR(DATES, 'DD'))) 토

      FROM (

    SELECT (MAKE_DATES + LEVEL -1 ) DATES

                     FROM ( SELECT TO_DATE('20181101','YYYYMMDD') MAKE_DATES FROM DUAL) 

                     CONNECT BY (MAKE_DATES + LEVEL-1) <= LAST_DAY(MAKE_DATES)

               )

    GROUP BY DECODE(TO_CHAR(DATES,'D'), 1, TO_CHAR(DATES, 'IW')+1, TO_CHAR(DATES, 'IW'))

    ORDER BY DECODE(TO_CHAR(DATES,'D'), 1, TO_CHAR(DATES, 'IW')+1, TO_CHAR(DATES, 'IW'))



    'DATABASE' 카테고리의 다른 글

    [ORACLE] MERGE문  (0) 2018.11.06
    [ORACLE] ROW_NUMBER() OVER( )  (0) 2018.11.05
    [ORACLE] CONNECT BY LEVEL 개념  (0) 2018.11.05
    [ORACLE] DECODE 와 CASE  (0) 2018.11.05
    [ORACLE] 함수 모음  (0) 2018.11.05

    댓글

Designed by Tistory.