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로 표현
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로 표현
column이 음수일 경우와 양수일 경우에 대해 나눌 수 있다.
음수일때 > -1, 양수일때 > 1
select
decode(sign(A), -1, 'A column 도출결과는 음수')
,decode(sign(A), 1, 'A column 도출결과는 양수')