WITH EMPLVL AS (
--anchor
SELECT E.Employee_id, E.Employee_name, E.Manager_id, E.Manager_name , 0 AS Employee_level
,[Path_id] = CAST(E.Employee_id AS NVARCHAR(MAX))
,[Path_name] = CAST(E.Employee_name AS NVARCHAR(MAX))
FROM EMPLOYEE E
WHERE E.Manager_id IS NULL
UNION ALL
--Recursive
SELECT E.Employee_id, E.Employee_name, E.Manager_id, E.Manager_name , L.Employee_level + 1 as Employee_level
,[Path_id] = CONCAT(CAST([Path_id] AS NVARCHAR(MAX)), N' / ', CAST(E.Employee_id AS NVARCHAR(MAX)))
,[Path_name] = CONCAT(CAST([Path_name] AS NVARCHAR(MAX)), N' / ', CAST(E.Employee_name AS NVARCHAR(MAX)))
FROM EMPLOYEE E
INNER JOIN EMPLVL L ON E.Manager_id = L.Employee_id
)
SELECT * FROM EMPLVL
ORDER BY Employee_level