Дубли при выполнении connect by level
Подскажите пожалуйста как можно изменить запрос, чтобы в конечном итоге level не дублировал строки, то есть после выполнения было 8 строк , а не 30. Можно , к примеру прописать distinct, но на больших данных запрос очень долго отрабатывает.
with cte as
(select 1 as first_ticket_barcode
from dual
union all
select 5 as first_ticket_barcode
from dual
)
select first_ticket_barcode + level -1
from cte
connect by level <= 4
Ответы (1 шт):
Автор решения: Mike
→ Ссылка
connect by переклеивает все строки в выборке между собой по условию в connect by, а так как там нет условия объединения, то все строки перемножаются между собой. Что бы этого не происходило надо сделать отдельный генератор нужных значений и его результат переклеить с входными данными:
with cte as (
select 1 as first_ticket_barcode from dual
union all
select 5 as first_ticket_barcode from dual
)
select first_ticket_barcode + lev - 1
from cte,
(select level lev from DUAL connect by level <= 4) gen