0
深度のある従業員とマネージャー名を表示する必要があります。SQL Server:深さの階層クエリ
サイモンは、トップマネージャーで、ケイティのマネージャがサイモンで、Johnのマネージャがケイティの場合、私は以下しようとした彼がトップで、ケイティのレベルが1になり、ジョンのレベルが2
となりますので、その後、サイモンのレベルは0になります希望の出力が得られません。コードで訂正するものを教えてください。
マイコード:
Declare @ID INT
SET @ID = 6;
WITH EmployeeCTE AS
(
SELECT
ID, Name, MgrID, 0 AS level
FROM
Employee
WHERE
ID = @ID
UNION ALL
SELECT
emp.ID, emp.Name, emp.MgrID, level+1 AS level
FROM
Employee emp
JOIN
EmployeeCTE ON emp.ID = EmployeeCTE.MgrID
)
--select * from EmployeeCTE
SELECT
e1.Name, ISNULL(e2.Name, 'Top BOSS') as [Manager Name],
e2.level
FROM
EmployeeCTE e1
LEFT JOIN
EmployeeCTE e2 ON e1.MgrID = e2.ID
@Mou楽しみのためだけにあなたの最終的な選択にe1.levelを含めます。フェッチしたFIRSTノードがレベル0であることがわかります(レベルが上がるとレベルが上がります)。それを動的に修正するには、逆順のシーケンスを取得するだけです。したがって、降順 –