Удалить дубликаты в запросе CONNECT BY LEVEL - PullRequest
0 голосов
/ 23 апреля 2019

Я пытался найти все дни между двумя датами, и у меня есть запрос здесь

with tmp as(
  select 1 sno, to_date('20181227', 'YYYYMMDD') curr_date, to_date('20181231', 'YYYYMMDD') curr_date2 from dual
  union all
  select 2 sno, to_date('20181227', 'YYYYMMDD'), to_date('20181231', 'YYYYMMDD') from dual
)
 SELECT sno, curr_date + level - 1 DAY, LEVEL 
   FROM tmp
CONNECT BY curr_date + level -1 <= curr_date2

Но я получил повторяющийся результат и обнаружил, что отсутствует START WITH предложение здесь но я не знаю START WITH где !!

Я до сих пор не могу найти решение для удаления дубликатов в результате.

1 Ответ

1 голос
/ 23 апреля 2019

Используйте метод prior + sys_guid.

...
CONNECT BY curr_date + level -1 <= curr_date2
and prior sno = sno
and prior sys_guid() is not null;

DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...