我很确定您需要递归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 jointbl_nodes non cte.nod2 = n.nod1 where nodes not like concat('%-', n.nod2, '-%') )select nodes, total_lengthfrom ctewhere not exists (select 1 from cte cte2 where cte2.nodes like concat(cte.nodes, '_%') );这是一个
db<> fiddle。



