Domanda

Ho un tipico tavolo autoreferenziale di dipendenti.

Come si può costruire un'UDF per restituire una tabella di dati di tipo che possono essere utilizzati in altre query di aderire a tale passo l'UDF un id di un utente nella tabella e ottenere un risultato di id di quell'utente e tutti gli utenti collegati a lui tramite un managerId?

La tabella che ho è EmployeeId, ManagerID, Name ....

Tutto quello che serve è quello di passare un EmployeeId e ottenere un risultato ricorsiva di tutti i record che è in ManagerID è l'id del passato in param, e nessuno dei record che hanno questi come manager, e così via ...

grazie

È stato utile?

Soluzione

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
)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top