문제

I have a typical self-referencing table of employees.

How can you build an UDF to return a table data-type that can be used in other queries to join to such that I pass the UDF a id of a user in the table and get a result of that user's id and all users linked to him via a managerId?

The table I have is EmployeeId, ManagerID, Name....

All I need is to pass an EmployeeId and get a recursive result of all records who's ManagerID is the id of the passed in param, and any of the records that have these as managers, and so on...

thanks

도움이 되었습니까?

해결책

CREATE FUNCTION GetEmployees  
(  
  @EmployeeId int
)
RETURNS TABLE 
AS
RETURN 
(
  WITH yourcte AS
  (
    SELECT EmployeeId, ManagerID, Name
    FROM Employees
    WHERE EmployeeId = @EmployeeId
    UNION ALL
    SELECT e.EmployeeId, e.ManagerID, e.Name
    FROM Employees e
    JOIN yourcte y ON e.ManagerID = y.EmployeeId
  )
SELECT EmployeeId, ManagerID, Name
FROM yourcte
)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top