2013-08-21 92 views
2

我有一個任務來查找特定給定日期的下一個工作日。它應該排除假期表中列出的假期(mst_holiday)。我有一個使用解碼功能的程序來查找連續假期或週末時的下一個工作日。例如,如果今天是星期三21-07-2013,如果我需要在5天后查找,則應顯示26-07-2013,如果是假期,則應顯示連續的非假期。在oracle中給出日期的下一個工作日

我用過的樣本解碼函數如下。請幫我寫另一個sql查詢。

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個步驟:

1)生成要檢查例如日期範圍:

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選擇。

+0

這個結束日期是什麼意思?如何減去假期表? –

+0

限制您的日期範圍,您必須確保至少有1個商務日。你可以用「rownum <7」替代。選擇MINUS減去從另一個選擇的結果:http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries004.htm –

相關問題