2013-03-08 3 views
-1

Прошу прощения за это, но мой предыдущий вопрос был неправильно оформлен, поэтому создание другого сообщения.Запрос, который дает список дат между двумя диапазонами дат

Мой вопрос похож на вопрос: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:14582643282111

Мне нужно написать внутренний запрос, который даст мне список дат между двумя диапазонами дат для внешнего запроса.

Мой внутренний запрос возвращает следующие 2 строки:

SELECT request.REQ_DATE, request.DUE_DATE FROM myTable where id = 100 

REQ_DATE   DUE_DATE 
    3/19/2013   3/21/2013 
    3/8/2013   3/8/2013 

Поэтому мне нужно внутренний запрос, который будет возвращать следующие даты для внешнего запроса:

3/19/2013 
3/20/2013 
3/21/2013 
3/8/2013 

Ответ в посте выше имеет дату начала и закончится дата жестко закодирована, и в моем случае она исходит из другой таблицы. Так что я пытаюсь написать запрос, как это, не работает:

Select * from outerTable where my_date in 
( 
    select to_date(r.REQ_DATE) + rownum -1 from all_objects, 
    ( 
     SELECT REQ_DATE, DUE_DATE 
     FROM myTable where id = 100 
    ) r        
    where rownum <= to_date(r.DUE_DATE,'dd-mon-yyyy')-to_date(r.REQ_DATE,'dd-mon-yyyy')+1; 
) 
+0

Если ответ ниже не работает для вас, пожалуйста, смотрите ответ я оставил на известном уровне пост. Я добавил ответ всего пару минут назад, не зная, что вы повторно разместили. Мой ответ основан на статье «Ask Tom», на которую вы ссылались. Тем не менее, я думаю, что ответ ниже выглядит солидным. –

ответ

0
with 
T_from_to as (
    select 
     trunc(REQ_DATE) as d_from, 
     trunc(DUE_DATE) as d_to 
    FROM myTable 
    where id = 100 
), 
T_seq as (
    select level-1 as delta 
    from dual 
    connect by level-1 <= (select max(d_to-d_from) from T_from_to) 
) 
select distinct d_from + delta 
from T_from_to, T_seq 
where d_from + delta <= d_to 
order by 1 
Смежные вопросы