我有一项任务是找到特定日期的下一个工作日。它应该排除假日表(mst_holiday
)中列出的假期。我有一个程序使用解码功能来查找连续假期或周末的下一个工作日。例如,如果今天是星期三21-07-2013,如果我需要找到5天后它应该显示26-07-2013,如果是假期,它应该显示连续的非假期。
我使用的样本解码功能如下。请帮我写备用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 :(得分: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中。