问题描述
从基本的员工/主管层次开始,我使用递归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 (将#修改为@)