CTE有助于查找从臀部到顶部的层次结构

问题描述 投票:0回答:1

table data

必需的输出是

enter image description here

需要从他的级别到顶层的每个用户进行等级划分

sql common-table-expression hierarchy
1个回答
0
投票

您的预期输出与我有点联系,因为我真的不明白为什么泰勒和布赖恩被展示为他们自己的经理,但为什么Skyler却没有?

以及为什么没有行将Andrew和Sara列为经理?

无论如何,如果我没有误解您的意图,以下应该为您指出方向。

DECLARE @tv TABLE (
    [NAME] nvarchar(25),
    [LEVEL] nvarchar(10),
    MANAGER_NAME nvarchar(25)
)

INSERT INTO @tv VALUES
('Sara','EXEC', ''),
('Andrew','EXEC', 'Sara'),
('Brain','VP', 'Andrew'),
('skyler','RVP', 'Brain'),
('Teyler','DIRECTOR', 'skyler')

;WITH cte([NAME], Manager_name, Reportee_name) AS (
    SELECT [NAME], [NAME], [NAME] 
    FROM @tv 
    UNION ALL 
    SELECT 
      tv.[NAME], 
      tv.Manager_name, 
      cte.Reportee_name 
    FROM  @tv tv, cte 
    WHERE tv.[NAME] = cte.Manager_name 
        AND tv.Manager_name <> ''
)

SELECT Reportee_name, Manager_name 
FROM cte ORDER BY Reportee_name
© www.soinside.com 2019 - 2024. All rights reserved.