Select 我日历中的第 10 个工作日 table

Select 10th working day from my calendar table

我有一个 table,其中有 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;

我知道这行不通

我认为下面的 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

其中一种方法是使用解析函数lead():

SQLFiddle demo

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'