snike555 Запрос, я полагаю, можно сделать, только вот на а надо ограничения наложить
1 первый день
2 количество дней(включая первый и последний дни диапазона), или последний день.
3 максимально допустимое количество дней в диапазоне 1-2
Параметры 1 и 2, я так полагаю изменяемые и будут подставлятся в строку запроса. Остальное может сделать сервер.
В принципе, можно обойтись без 3 - зависит от того в какой среде будет генерится запрос, ну и других соображений.
Как вариант решения
select case when ID is null then a else null end as a,
case when ID is null then null else a end as b,
ID
from (
select num, Добавить_к_дате(StartDate , num -1, дней) <<-- формируешь последовательно даты>> as a
from( select num from Numerator where num <= days) snum
left join (
select b, ID from bID
union all
select distinct b, Null as ID from bID
) t
on snum.a=t.b
) t order by num, b
здесь Numerator - таблица с последовательностью чисел, начиная с 1, перекрывающих необходимый тебе диапазон. days - количество дней в выбранном диапазоне. StartDate - первый день диапазона - здесь также нужна функция типа Добавить_к_дате(StartDate , num -1, дней), которая будет прибавлять в первому дню диапазона номера из таблицы, таким образом создашь непрерывный диапазон дней в заданном диапазоне. oraclе не юзаю, сам подберешь нужную.
Проверить запрос возможности не было, надеюсь грубых ошибок нет, мелкие сам поправишь.
Numerator можно сгенерить на лету - ну не знаю, учитывая, что тут рекомендуется сортировка по полю этой таблицы, может стоит ее создать с соответствующим индексом. да и для других запросов может пригодиться
Оптимизацией не занимался - написал так, что бы запрос легко читался.