【问题标题】:Pull subsequent values拉取后续值
【发布时间】:2021-12-05 16:02:00
【问题描述】:

假设我有下表

Employee_ID 主管_ID 001 123 178 123 002 178 154 178 003 154 004 201

我正在尝试拉出所有受 Supervisor_ID 123 监管的员工以及该分支机构中的所有其他主管(即 178、158),这样它会吐出以下员工 001、178、002、154、003 . 我将如何实现这一目标?对于标题中缺少措辞,我深表歉意。

【问题讨论】:

标签: tsql


【解决方案1】:

我们可以在这里使用递归分层查询:

WITH cte AS (
    SELECT Employee_ID, Supervisor_ID
    FROM yourTable
    WHERE Employee_ID = 123
    UNION ALL
    SELECT t1.Employee_ID, t1.Supervisor_ID
    FROM yourTable t1
    INNER JOIN cte t2
        ON t2.Employee_ID = t1.Supervisor_ID
)

SELECT Employee_ID
FROM cte
WHERE Employee_ID <> '123'
ORDER BY Employee_ID;

Demo

请注意,您的示例表似乎缺少员工 123 显示为员工的实际记录。我上面的查询假设存在这样的记录。

【讨论】:

    猜你喜欢
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    • 2013-08-04
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    相关资源
    最近更新 更多