Это дополнительный вопрос от Как получить список месяцев между двумя заданными датами с помощью запроса? действительно. (Я подозреваю, что это потому, что я не совсем понимаю логику соединений по уровням!)
У меня есть список таких данных
ID | START_DATE | END_DATE
1 | 01-JAN-2018 | 20-JAN-2018
2 | 13-FEB-2018 | 20-MAR-2018
3 | 01-MAR-2018 | 07-MAR-2018
и то, что я хочу попробовать, - это список со всеми днями между датой начала и окончания для каждого идентификатора.
Так, например, я хочу список, который дает
ID | DATE
1 | 01-JAN-2018
1 | 02-JAN-2018
1 | 03-JAN-2018
...
1 | 19-JAN-2018
1 | 20_JAN-2018
2 | 13-FEB-2018
2 | 14-FEB-2018
2 | 15-FEB-2018
...
и т.п.
То, что я пытался сделать, это адаптировать один из ответов по приведенной выше ссылке следующим образом.
select id
, trunc(start_date+((level-1)),'DD')
from (
select id
, start_date
, end_date
from blah
)
connect by level <= ((trunc(end_date,'DD')-trunc(start_date,'DD'))) + 1
что дает мне то, что я хочу, но затем целый ряд повторяющихся дат, как будто это похоже на декартово соединение. Есть ли что-то простое, что мне нужно добавить, чтобы исправить это?
DATE
также включает время. - person Clockwork-Muse   schedule 04.07.2018