Я бы, вероятно, посмотрел на использование функции NEXT_DAY
, которая возвращает первый день дня недели при условии, что это происходит после указанной даты.Получив это, вы можете добавить необходимое количество недель.
Примером этого может быть:
with test_data as (
select
'2011' as the_year,
'Nov' as the_month,
'Sun' as the_day,
4 as the_week
from dual
)
select
the_year, the_month, the_day, the_week,
next_day(to_date(the_year||the_month, 'YYYYMON') - 1, the_day) +
7* (the_week -1) as the_date
from test_data