Полученный вами код вы получите.
Msg 208, Level 16, State 1, Line 10
Invalid object name 'ParentID'.
Измените FROM ParentID
на FROM Parent
.
Вам также нужен столбец NavigationID
в таблице Nav
.
Попробуйте это:
declare @Nav table(NavigationID int, ParentID int)
insert into @Nav
select 1, null union all
select 2, 1 union all
select 3, 1 union all
select 4, 3 union all
select 5, 3 union all
select 6, null union all
select 7, 6
declare @NavigationID int;
set @NavigationID = 5;
with Parent as
(
select NavigationID,
ParentID
from @Nav
where NavigationID = @NavigationID
union all
select t.NavigationID, t.ParentID
from Parent
inner join @Nav t
on t.NavigationID = Parent.ParentID
)
select NavigationID
from Parent
where NavigationID <> @NavigationID;
Результат:
NavigationID
------------
3
1
Замените @Nav таблицей, которую вы используете.@Nav здесь только для того, чтобы этот код можно было скопировать и протестировать.