;with cte as
(
select employeeid, supervisorid, cast(employeeid as varchar(max)) as [list], 0 [level]
from employee
where employeeid = 'xxxx'
union all
select e.employeeid, e.supervisorid, cast(cte.list + ',' + e.employeeid as varchar(max)) as [list], level + 1
from employee e
inner join cte on cte.supervisorid = e.employeeid
where cte.list not like '%' + e.employeeid + '%'
)
select * from cte order by level