Вы добавляете целочисленный столбец, который начинается с 1
и увеличиваете его для каждой итерации:
with recursive mlbom as (
select bom_item_material_number, bom_item_component, 1 lvl
from bom_table bom
where not exists (
select 1
from bom_table bom1
where bom1.bom_item_component = bom.bom_item_material_number
)
union all
select bom.bom_item_material_number, bom.bom_item_component, mlbom.lvl + 1
from bom_table bom
inner join mlbom on mlbom.bom_item_component = bom.bom_item_material_number
)
select * from mlbom ;
Я сделал несколько исправлений в запросе:
для объявления cte требуется ключевое слово recursive
, поэтому нет необходимости join
в подзапросе exists
привязки рекурсивного запроса
предположительно, рекурсивная часть запроса должна присоединиться bom
к mlbom
вместо самостоятельного объединения bom
.