2010-12-06 13 views
1

Ich habe die CTE unten funktioniert gut in der Umschichtung einer Mitarbeiter Tabelle und Erstellen einer erweiterten Liste der Mitarbeiter ID an sie weitergegeben sowie alle direkten und indirekten Berichte.CTE ändern, um auf ein anderes Feld zu verweisen?

Ich versuche, eine Schwester CTE zu machen Benutzernamen zu verwenden, anstatt Mitarbeiter-ID, aber ich bekomme keine Daten zurück, nachdem ich die Änderungen ...

Hier ist meine Arbeits-Code ist mit employeeID, wie kann ich erhalte diese mit NTID (Mitarbeiter) und managerNTID (Manager)

CREATE FUNCTION fnGetEmployeeHierarchy 
( 
    @EmployeeId int = null 
) 
RETURNS TABLE 
AS 
RETURN 
( 
    WITH yourcte AS 
    ( 
    SELECT EmployeeId, ManagerID, NTID, FullName--, Name 
    FROM Employees 
    WHERE EmployeeId = isnull(@EmployeeId,EmployeeId) 
    UNION ALL 
    SELECT e.EmployeeId, e.ManagerID, e.NTID, e.FullName--, e.Name 
    FROM Employees e 
    JOIN yourcte y ON e.ManagerID = y.EmployeeId 
) 
SELECT EmployeeId, ManagerID, NTID, FullName--, Name 
FROM yourcte 
) 

Antwort

0

arbeiten Unter der Annahme, dass managerNTID Referenzen der NTID Spalte Manager - versuchen Sie dies:

CREATE FUNCTION fnGetEmployeeHierarchyNew(@EmployeeNTID int = null) 
RETURNS TABLE 
AS 
    RETURN 
    ( 
    WITH NewCTE AS 
    ( 
     SELECT EmployeeId, ManagerID, NTID, FullName--, Name 
     FROM Employees 
     WHERE NTID = ISNULL(@EmployeeNTID, EmployeeNTID) 

     UNION ALL 

     SELECT e.EmployeeId, e.ManagerID, e.NTID, e.FullName--, e.Name 
     FROM Employees e 
     JOIN NewCTE y ON e.ManagerNTID = y.NTID 
    ) 
    SELECT EmployeeId, ManagerID, NTID, FullName--, Name 
    FROM NewCTE 
) 
+0

Ich habe diese Zeile repariert: WHERE NTID = ISNULL (@EmployeeNTID, EmployeeNTID), also ist: WHERE NTID = ISNULL (@UserName, NTID), weil die analoge Beziehung zwischen employeeID und managerID tatsächlich NTID und managerNTID ist. auch mit dieser behoben bekomme ich Syntaxfehler. Ideen? – kacalapy

+0

@kacalapy: Syntaxfehler ** wo ** ?? Welche Zeile, welche Aussage ?? –

Verwandte Themen