SQL故障分解层次结构

问题描述

从基本的员工/主管层次开始,我使用递归CTE建立级别:

WITH EmployeeSupervisor
AS (
    SELECT *
    FROM (
        VALUES ('mike','lisa'),('kevin',('lisa','ken'),('ken','scott'),('scott','chris'),('chris','')
        ) RawData(emp,sup)
    ),Hier
AS (
    -- anchor level,no supervisor
    SELECT 1 AS lvl,emp,sup
    FROM EmployeeSupervisor
    WHERE sup = ''
    
    UNION ALL
    
    -- recursive member
    SELECT H.lvl + 1 AS lvl,ES.emp,ES.sup
    FROM EmployeeSupervisor ES
    INNER JOIN Hier H
        ON ES.sup = H.emp
    WHERE H.lvl + 1 <= 5 -- max of 5 levels
        AND ES.sup != ''
    )
SELECT *
FROM Hier

我尝试在带有COALESCE的PIVOT上进行一些变体,以获得所需的输出(如下查询所示),但没有成功。

-- expected output
SELECT *
    FROM (
        VALUES ('mike','lisa','ken','scott','chris',NULL),NULL,NULL)
        ) Expected(lvl1,lvl2,lvl3,lvl4,lvl5)

那里有很多类似的问题,但是没有一个能真正解决这个问题的本质。

  • 编辑:使用SQL Server 2016,并希望避免使用有利于或递归CTE的众多重复连接。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)