Вам необходимо остановить рекурсию, которая является проблемой в SQL Server. Ниже приведен список посещенных станций для остановки рекурсии:
with cte as (
select from1 as st, to1 as nd, concat(',', st, ',', to1) as dests, 1 as lev
from RailwayTbl
where from1 = 'Berlin'
union all
select e.from1, e.to1, concat(cte.dests, e.to1, ',') as dests, lev + 1
from RailwayTbl e join
cte
on cte.nd = e.from1
where dests not like concat('%,', e.nd, ',%')
)
select * from cte;
Я также добавил lev
. Часто я использую where lev < 10
в рекурсивной части определения cte для отладки.