これを試してください:
declare @t table (
childID int,
ParentID int,
level int
)
insert into @t
select 71, 154, 4
union
select 154, 192, 3
union
select 192, 209, 2
union
select 209, 0, 1
Declare @SearchChild int
set @SearchChild=71
;with MyCTE as (
select t1.childID, t1.ParentID , @SearchChild AS searchChild, t1.level
from @t t1
where t1.childID = @SearchChild
UNION ALL
select t1.childID, t1.ParentID , c.SearchChild, t1.level
from @t t1
inner join MyCTE c on t1.childID=c.ParentID
)
select top 1 * from MyCTE order by level asc
出力:
childID ParentID searchChild level
----------- ----------- ----------- -----------
209 0 71 1
あなたが何を求めているのかわかりません。209と71が一緒になっている行はありませんか?これがあなたにできる最善のことです。また、このCTEはチェーンを上向きに機能し、下向きには機能しないため、大きなテーブルではるかにうまく機能するはずです。