• Is there a way to get the complete hierarchy for a single Employee?

    declare @EmployeeID int

    select @EmployeeID = 12

    ;WITH

    cteDirectReports AS

    (

    SELECT EmployeeID, ManagerID, EmployeeName, EmployeeLevel = 1,

    HierarchicalPath = CAST('\'+CAST(EmployeeName AS VARCHAR(10)) AS VARCHAR(4000))

    FROM dbo.Employee

    WHERE ManagerID IS NULL

    UNION ALL

    SELECT e.EmployeeID, e.ManagerID, e.EmployeeName, EmployeeLevel = d.EmployeeLevel + 1,

    HierarchicalPath = CAST(d.HierarchicalPath + '\'+CAST(e.EmployeeName AS VARCHAR(10)) AS VARCHAR(4000))

    FROM dbo.Employee e

    INNER JOIN cteDirectReports d ON e.ManagerID = d.EmployeeID

    )

    SELECT EmployeeID,

    ManagerID,

    EmployeeName = SPACE((EmployeeLevel-1)*4) + EmployeeName,

    EmployeeLevel,

    HierarchicalPath

    FROM cteDirectReports

    where EmployeeID = @EmployeeID

    ORDER BY HierarchicalPath

    ;

    My quick and futile attempt above (which I understand why it does not work) only gets:

    128 Megan4\Jim\Bob\Bill\Megan

    The desired result would be:

    1NULLJim1\Jim

    31 Bob2\Jim\Bob

    83 Bill3\Jim\Bob\Bill

    138 Kim4\Jim\Bob\Bill\Kim

    128 Megan4\Jim\Bob\Bill\Megan

    Thanks for the post.