मुझे पूरा यकीन है कि आपको एक पुनरावर्ती CTE की आवश्यकता है। हालांकि, आपके नमूना परिणामों का कोई मतलब नहीं है।
निम्नलिखित मूल रूप से वही करता है जो आप चाहते हैं:
with cte AS (
select nod1, nod2, nod_length as Total_length,
convert(varchar(max), concat('-', nod1, '-', nod2, '-')) as nodes, 1 as lev
from tbl_nodes n
where nod1 = 'A'
union all
select cte.nod1, n.nod2, cte.Total_length + n.nod_length,
convert(varchar(max), concat(cte.nodes, n.nod2, '-')) as nodes, lev + 1
from cte join
tbl_nodes n
on cte.nod2 = n.nod1
where nodes not like concat('%-', n.nod2, '-%')
)
select nodes, total_length
from cte
where not exists (select 1
from cte cte2
where cte2.nodes like concat(cte.nodes, '_%')
);
यहां एक डीबी<>बेला है।