[SQLD/P] 주의 시작일자, 종료일자 도출(수정)

Hyo Kyun Lee·2022년 10월 24일
0

SQLD/P

목록 보기
34/82

1. 유의사항

  • 기준일자를 설정한 후, 해당 주의 시작일자와 종료일자를 도출한다.
  • 달력표기상 시작일자는 항상 월요일, 종료일자는 항상 일요일로 설정한다.
  • 기준일자를 일요일로 설정할 경우, 시작일자는 저번주로 넘어간다.
  • 기준일자를 일요일로 설정할 경우, 종료일자는 당일이 된다.
  • sysdate + N 계산 > TO_DATE
  • 날짜표기 > TO_CHAR

2. DECODE를 활용하여 시작일자, 종료일자 도출

2-1. 시작일자

TO_CHAR(TO_DATE(A.BASE_DATE, 'YYYYMMDD') - (DECODE(TO_CHAR(TO_DATE(A.BASE_DATE, 'YYYYMMDD') , 'D'), 1, 8, TO_CHAR(TO_DATE(A.BASE_DATE, 'YYYYMMDD'), 'D')) -2), 'YYYYMMDD') AS STRN_DATE

※ 기준일자가 일요일일 경우, 하루를 더한 날이 아닌 저번주 월요일(-6)이 시작일자가 되어야 한다
※ 이 부분을 DECODE로 표현

2-2. 종료일자

TO_CHAR(TO_DATE(A.BASE_DATE, 'YYYYMMDD') + (DECODE(8 - TO_CHAR(TO_DATE(A.BASE_DATE, 'YYYYMMDD') , 'D'), 7, 0, 8 - TO_CHAR(TO_DATE(A.BASE_DATE, 'YYYYMMDD'), 'D'))), 'YYYYMMDD') AS END_DATE

※ 기준일자가 일요일일 경우, 별도 연산없이 해당 일자가 종료일자가 되어야 한다.
※ 이 부분을 DECODE로 표현

3. 참고쿼리

  • sign(column)

column이 음수일 경우와 양수일 경우에 대해 나눌 수 있다.
음수일때 > -1, 양수일때 > 1

select 
 decode(sign(A), -1, 'A column 도출결과는 음수')
,decode(sign(A),  1, 'A column 도출결과는 양수')   

4. 참고자료

sign - https://dev4u.tistory.com/176

0개의 댓글