2013-08-21 16 views
2

특정 날짜의 다음 영업일을 찾는 작업이 있습니다. 휴일 테이블 (mst_holiday)에 나열된 휴일을 제외해야합니다. 나는 연휴 또는 주말이있는 다음 영업일을 찾기 위해 디코드 기능을 사용하는 절차가 있습니다. 예를 들어 오늘이 21-07-2013 수요일 인 경우 5 일 후에 찾을 필요가 있다면 26-07-2013을 표시하고, 휴일 인 경우 연휴가 아닌 연속 휴일을 표시해야합니다.오라클에 날짜를 입력 한 다음 영업일

내가 사용한 샘플 디코딩 기능은 다음과 같습니다. 제발 대체 SQL 쿼리를 작성하는 데 도움이됩니다.

1) 예를 들어 검사 할 날짜 범위 생성 :

DECODE 
    (ldate, 
    laps.holidaydate, DECODE 
     (ldate + 1, 
     laps.holidaydate + 1, DECODE 
      (ldate + 2, 
      laps.holidaydate + 2,ldate+3,ldate+2),ldate+1),ldate);` 
+0

이 대답을 확인하고 준비된 기능처럼 보입니다. http://stackoverflow.com/a/16413949/1026199 –

+4

이전 버전의 질문에 대한 답변을 얻었습니다. 이것은 새로운 것을 추가하는 것처럼 보이지 않습니다. 왜 그 해답이 유용하지 않은지 설명하고 원래의 질문을 수정하여 요청한 세부 정보와 자세한 정보를 제공하고 같은 질문을 다시하지 마십시오. –

답변

0

이 3 단계를 수행 휴일 테이블

select to_date(:start_date,'dd-mon-yyyy') + rownum -1 
from all_objects 
where rownum <= to_date(:end_date,'dd-mon-yyyy')-to_date(:start_date,'dd-mon-yyyy')+1 

2)를 선택 뺀 테이블을

3) 날짜순 정렬 방법을 선택하고 첫 번째 레코드를 가져 오십시오.

하나의 SQL Select에 모두 넣으십시오.

+0

이 종료일은 무엇을 의미합니까? 휴일 테이블로 마이너스하는 법? –

+0

사이에 날짜 범위가 제한되어 있으므로 적어도 하루에 1 번 부룬스가 있어야합니다. 당신은 "rownum <7"으로 대체 할 수 있습니다. MINUS를 선택하여 다른 사용자의 선택 결과를 빼십시오. http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries004.htm –

관련 문제