Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Eclipse
- Java
- 에러
- spring
- Oracle
- Design Pattern
- Head First Design Pattern
- 오라클
- math
- 카카오톡1차
- javascript
- JPA
- 매핑
- 이펙티브자바
- 디자인패턴
- 우아한테크코스
- 회고
- 프로그래머스
- 자바
- 후기
- 인프런
- 독서
- 공부
- 독서리뷰
- 인코딩
- 인강리뷰
- Singleton
- study
- 알고리즘
- 람다
Archives
- Today
- Total
Lee's Grow up
[오라클/ORALCE] 쿼리(QUERY)로 달력(CALENDAR) 그리기 본문
반응형
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를 대체해서 사용한 예제가 많이 있으니 참고하면
좋을듯하다.
반응형
'DB > ORACLE' 카테고리의 다른 글
[오라클/ORACLE] 형변환 CAST 연산자 , TO_XXXX 함수 ( TO_NUMBER, TO_DATE, TO_CHAR ) (1) | 2019.09.10 |
---|---|
[오라클/ORACLE] 몬테카를로 방법(Monte Carlo method)을 통한 PI(원주율,파이) 계산 쿼리(QUERY) (1) | 2019.09.06 |
[오라클/ORACLE] NULL ( 널 ) 의 개념 / 널이란 ? NULL 이란 (0) | 2019.09.06 |
PL/SQL 프로그램의 기본 구조 (0) | 2019.09.05 |
PL/SQL 개요 (0) | 2019.09.05 |
Comments