Рекурсивные CTE немного хитры. Это делает то, что вы хотите:
with cte as (
select id, name, convert(varchar(max), name) as hier, 1 as lev
from t
where parentid = 0
union all
select t.id, t.name, cte.hier + '.' + t.name, lev + 1
from cte join
t
on t.parentid = cte.id
where lev < 10
)
select *
from cte;
Здесь - это дБ <> скрипка.