SQL 使用 CTE 对多列进行筛选的递归查询
SQL Recursive query using CTE to filter on multiple columns
我正在尝试将查询 1 的输出作为查询 2 的输入。为此,我使用了 CTE(通用 Table 表达式)。
员工层次结构
DEPT ID MANAGER1 MANAGER2 MANAGER3
Sales A234 10389 19400 3049
HR F394 29489 20403 Null
IT H339 A234
IT S599 39009 A234
预期输出
DEPT ID MANAGER1 MANAGER2 MANAGER3
IT H339 A234
IT S599 39009 A234
问题:
确定销售部门经理的直接下属。在上面的示例中,ID 234 来自销售部门。他的直接下属在 IT 部门,因为 A234 在 DIRECT_MANAGER1 和 DIRECT_MANAGER2.
之下
WITH CTE AS(
SELECT ID from Employee_Hierarchy
WHERE DEPT='Sales'
)
SELECT DEPT, ID
FROM Employee_Hierarchy
但是我不知道CTE这里的加入条件
我认为你不需要递归。似乎相关子查询就足够了:
select e.*
from employee_hierarchy e
where exists(
select 1
from employee_hierarchy m
where
m.id in (e.manager_id1, e.manager_id2, e.manager_id3)
and m.dept = 'Sales'
)
我正在尝试将查询 1 的输出作为查询 2 的输入。为此,我使用了 CTE(通用 Table 表达式)。
员工层次结构
DEPT ID MANAGER1 MANAGER2 MANAGER3
Sales A234 10389 19400 3049
HR F394 29489 20403 Null
IT H339 A234
IT S599 39009 A234
预期输出
DEPT ID MANAGER1 MANAGER2 MANAGER3
IT H339 A234
IT S599 39009 A234
问题: 确定销售部门经理的直接下属。在上面的示例中,ID 234 来自销售部门。他的直接下属在 IT 部门,因为 A234 在 DIRECT_MANAGER1 和 DIRECT_MANAGER2.
之下WITH CTE AS(
SELECT ID from Employee_Hierarchy
WHERE DEPT='Sales'
)
SELECT DEPT, ID
FROM Employee_Hierarchy
但是我不知道CTE这里的加入条件
我认为你不需要递归。似乎相关子查询就足够了:
select e.*
from employee_hierarchy e
where exists(
select 1
from employee_hierarchy m
where
m.id in (e.manager_id1, e.manager_id2, e.manager_id3)
and m.dept = 'Sales'
)