안녕하세요,,,오라클 시작하는 초보인데요
쿼리 질문좀 드리겠습니다 일단 쿼리는
Select b.APPROVER_ROLE,A.DOC_ID,A.TITLE,B.DEPT_NAME , B.USER_NAME , B.SERIAL_ORDER ,
b.APPROVER_ROLE,
D.DOC_STATUS,
nvl ( TO_CHAR(B.SIGN_DATE,'YYYY-MM-DD'), '미결재') etime,
TO_CHAR(SYSDATE,'YYYYMMDD') may,
F.SYSMAIL
from GW_USER.TGW_PROC_DOC A, GW_USER.TGW_PROC_APPROVER B, GW_USER.TGW_PROC_DOC C, GW_USER.TGW_PROC_APPRLINE D,ORGDBADM.TCN_USERINFORMATION_BASIC F
where A.DOC_ID=B.DOC_ID
and A.DOC_ID=C.DOC_ID
and A.DOC_ID=D.DOC_ID
and B.USER_ID=F.USER_UID
AND TO_DATE(D.DRAFT_DATE,'YYYY-MM-DD') BETWEEN TO_DATE(SYSDATE-30,'YYYY-MM-DD') AND TO_DATE(SYSDATE+30, 'YYYY-MM-DD')
AND TO_DATE(SYSDATE,'YYYY-MM-DD') -TO_DATE(D.DRAFT_DATE,'YYYY-MM-DD') >=3
AND D.DOC_STATUS ='3'
AND B.APPROVER_ROLE ='5'
order by B.USER_NAME
쿼리는 이렇게 짯는데요,,,내용이 결재 문서중에,,,D.DRAFT_DATE(기안일자) 가 SYSDATE와 비교해서 3일이 지난 문서를
셀렉트 해오는 건데요,,,여기서 제가 하고싶은것은,,토요일/ 일요일, 공휴일 같이 쉬는날은 저 웨어 조건에서 빼고 3일 지난 문서를 셀렉트 해오고 싶습니다
왜냐하면 토요일/ 일요일, 공휴일 같이 쉬는날 전에
즉 금요일날 결재를 올려놓고 퇴근하고 월요일날 되보면 토요일/일요일에는 쉬는 날이니
AND TO_DATE(SYSDATE,'YYYY-MM-DD') -TO_DATE(D.DRAFT_DATE,'YYYY-MM-DD') >=3
이 조건으로 봤을때는 3일이 지났으니 셀렉트가 됩니다,,
제가 하고싶은것은 쉬느날은 저 where 조건
AND TO_DATE(SYSDATE,'YYYY-MM-DD') -TO_DATE(D.DRAFT_DATE,'YYYY-MM-DD') >=3
에서 제외 하고싶은데,,,, 토요일 일요일만 체크하라고 한다고하면
AND TO_DATE(SYSDATE,'YYYY-MM-DD') -TO_DATE(D.DRAFT_DATE,'YYYY-MM-DD') >= DECODE(to_char(D.DRAFT_DATE,'d'),6,5,5,4,3)
이런식으로 목요일에 올린 결재는 4일, 금요일에 올린 결재는 5일 나머지는 3일로 셀렉트 해오게 하면 되겠는데
평일에 휴일인 공휴일은 어떡해 해야할지 도저히 감이 안잡힙니다.
인터넷을 찾아보니 휴일 테이블을 만들어서 날짜를 빼라고하는데,,,,이게 제가 머리가 나빠서인지 이해가 안가는데,,
혹시 다른 방법이 있거나,, 이방법을좀 설명해 주실수 있나요?
날씨가 많이 더운데 고생하시고,,,좋은하루 보내세요~ |