Lee's Grow up

[오라클/ORALCE] 쿼리(QUERY)로 달력(CALENDAR) 그리기 본문

DB/ORACLE

[오라클/ORALCE] 쿼리(QUERY)로 달력(CALENDAR) 그리기

효기로그 2019. 9. 5. 17:33
반응형

1. SQL 쿼리로 달력 그리기


집계함수를 통해 ROW를 컬럼으로 만들어주고 같은 주의 값끼리 그룹핑

SELECT  MIN(DECODE(dw,1,dd)) 일
       ,MIN(DECODE(dw,2,dd)) 월
       ,MIN(DECODE(dw,3,dd)) 화
       ,MIN(DECODE(dw,4,dd)) 수
       ,MIN(DECODE(dw,5,dd)) 목
       ,MIN(DECODE(dw,6,dd)) 금
       ,MIN(DECODE(dw,7,dd)) 토     
FROM (
     SELECT TRUNC(dt + LEVEL - 1, 'd') week -- 해당 날짜의 주 계산 
                 ,TO_CHAR(dt + LEVEL - 1, 'd') dw   -- 해당 날짜의 요일 계산
                 ,TO_CHAR(dt + LEVEL - 1, 'dd') dd  -- 날짜 카운트
     FROM (
            SELECT trunc(sysdate,'MM') dt -- 월의 첫째 날 계산 
            FROM dual
     )
     CONNECT BY LEVEL < = LAST_DAY(dt) - dt + 1
)
GROUP BY week;
ORDER BY week;

추가로 13절의 SYSDTAE부분을 바꾸면 원하는 달의 날짜를 입력받아서 달력 추출이 가능하다.

쿼리 실행 결과

마치며

인터넷을 보면 PIVOT 절을 이용해서 집계함수와 DECODE를 대체해서 사용한 예제가 많이 있으니 참고하면

좋을듯하다.

반응형
Comments