0
Можно ли изменить этот запрос ниже, чтобы вместо того, чтобы «ОТКРЫТЬ» было таким же, это было бы ПОСЛЕДНИЙ «ИНТЕРВАЛЕНТНОСТЬ». Если, конечно, это не новый день, то это будет «OPEN»Создать последовательность дат и времени
Например, вот несколько строк даты от текущей версии:
DT OPEN CLOSE NAME INTERVAL END
8/4/2015 8/4/2015 9:00:00 AM 8/4/2015 2:00:00 PM Bob 8/4/2015 1:00:00 PM
8/4/2015 8/4/2015 9:00:00 AM 8/4/2015 2:00:00 PM Bob 8/4/2015 2:00:00 PM
8/5/2015 8/5/2015 9:00:00 AM 8/5/2015 2:00:00 PM Bob 8/5/2015 10:00:00 AM
8/5/2015 8/5/2015 9:00:00 AM 8/5/2015 2:00:00 PM Bob 8/5/2015 11:00:00 AM
8/5/2015 8/5/2015 9:00:00 AM 8/5/2015 2:00:00 PM Bob 8/5/2015 12:00:00 PM
и вот что результат должен быть
DT OPEN CLOSE NAME INTERVAL END
8/4/2015 8/4/2015 12:00:00 PM 8/4/2015 2:00:00 PM Bob 8/4/2015 1:00:00 PM
8/4/2015 8/4/2015 1:00:00 PM 8/4/2015 2:00:00 PM Bob 8/4/2015 2:00:00 PM
8/5/2015 8/5/2015 9:00:00 AM 8/5/2015 2:00:00 PM Bob 8/5/2015 10:00:00 AM
8/5/2015 8/5/2015 10:00:00 AM 8/5/2015 2:00:00 PM Bob 8/5/2015 11:00:00 AM
8/5/2015 8/5/2015 11:00:00 AM 8/5/2015 2:00:00 PM Bob 8/5/2015 12:00:00 PM
здесь в запросе
with par as (
select date '2015-08-07' enddate, 4 LookBackDays, 3600 inteval, 'Bob' Name,
'09:00' open, '14:00' close from dual),
t1 as (
select to_char(enddate-level+1, 'yyyy-mm-dd') dt, name, open, close from par
connect by level <= LookBackDays + 1),
t2 as (
select to_char(to_date(open, 'hh24:mi') + (level) * inteval/(24*60*60), 'hh24:mi') tm
from par
connect by to_date(open, 'hh24:mi') + level * inteval/(24*60*60)
<= to_date(close, 'hh24:mi'))
select to_date(dt, 'yyyy-mm-dd') dt,
to_date(dt||' '||open, 'yyyy-mm-dd hh24:mi') open,
to_date(dt||' '||close, 'yyyy-mm-dd hh24:mi') close, name,
to_date(dt||' '||tm, 'yyyy-mm-dd hh24:mi') IntervalEnd
from t1 cross join t2 order by dt, tm
спасибо.