我有一个表格,其中有2列DATE和HOLIDAY_FLAG。
DATE HOLIDAY_FLAG
01-JUL-2015 00.00.00 N
02-JUL-2015 00.00.00 N
03-JUL-2015 00.00.00 Y
04-JUL-2015 00.00.00 Y
05-JUL-2015 00.00.00 Y
06-JUL-2015 00.00.00 N
07-JUL-2015 00.00.00 N
08-JUL-2015 00.00.00 N
09-JUL-2015 00.00.00 N
10-JUL-2015 00.00.00 N
11-JUL-2015 00.00.00 Y
12-JUL-2015 00.00.00 Y
13-JUL-2015 00.00.00 N
14-JUL-2015 00.00.00 N
我想在where条件中提供所需日期并获取下一个第5个工作日的日期。
Example:
Input 01-JUL-2015 00.00.00
Output 09-JUL-2015 00.00.00
这是我到目前为止所做的事情
select b.DATE + 5
from CALENDAR b
where b.DATE = '01-JUL-2015 00.00.00'
and b.HOLIDAY_FLAG is not null;
我知道这不起作用
答案 0 :(得分:1)
其中一种方法是使用分析函数select d5
from (
select cal_date, lead(cal_date, 5) over (order by cal_date) d5
from calendar where holiday_flag='N')
where cal_date = date '2015-07-01'
:
<Drawable>:
rectangleColor: (1,0,0,1) if self.visible else (0,0,0,0)
答案 1 :(得分:0)
我认为下面的SQL可以解决问题。你可以尝试让我知道吗?
http://sqlfiddle.com/#!4/f600d/14/0
SELECT CAL_DATE
FROM (SELECT CA.CAL_DATE, ROWNUM AS RECNUM FROM CALENDAR CA WHERE HOLIDAY_FLAG = 'N') ABC,
(SELECT ROWNUM AS REQRECNUM
FROM CALENDAR
WHERE HOLIDAY_FLAG = 'N'
AND CAL_DATE = DATE '2015-07-01') BBC
WHERE ABC.RECNUM = BBC.REQRECNUM + 5