我需要为公司部门生成一个用户列表,这些用户是经理或经理的经理。
我有两张桌子;一份详细说明部门,一份包含经理层级(简化):
CREATE TABLE [dbo].[Manager](
[ManagerId] [int],
[ParentManagerId] [int])
CREATE TABLE [dbo].[Department](
[DepartmentId] [int],
[ManagerId] [int])
基本上,我正在尝试构建一个 CTE,它会给我一个 DepartmentId 列表,以及该部门经理层次结构中的所有 ManagerId。
所以...假设经理 1 是部门 1 的经理,经理 2 是经理 1 的经理,经理 3 是经理 2 的经理,我想看看:
DepartmentId, ManagerId
1, 1
1, 2
1, 3
基本上,经理们能够与他们所有的副经理的部门打交道。
构建 CTE 以返回 Manager 层次结构相当简单,但我正在努力将 Departments 注入其中:
WITH DepartmentManagers
AS
(
SELECT ManagerId,
ParentManagerId,
0 AS Depth
From Manager
UNION ALL
SELECT Manager.ManagerId,
Manager.ParentManagerId,
DepartmentManagers.Depth + 1 AS Depth
FROM Manager
INNER JOIN DepartmentManagers
ON DepartmentManagers.ManagerId = Manager.ParentManagerId
)
我需要所有部门以及所有相关经理的列表。
任何人都可以帮忙吗?