sql-server - SQL Server - 列出经理及以上的员工
问题描述
假设我有一个这样的数据集(我使用员工和经理,因为这是一个很好的例子):
EmployeeID | ManagerID | Role | ...
1 | NULL | CEO
2 | 1 | Manager
3 | 1 | Manager
5 | 2 | Team-Leader
6 | 2 | Team-Leader
7 | 3 | Team-Leader
8 | 2 | Employee
9 | 5 | Employee
10 | 6 | Employee
11 | 6 | Employee
12 | 7 | Employee
我想列出EmployeeID
所有在他之上担任角色的人。这是我想要的结果:
EmployeeID | ManagerID
12 | 7
12 | 3
12 | 1
12 | NULL
11 | 6
11 | 2
11 | 1
11 | NULL
....
9 | 5
9 | 2
9 | 1
9 | NULL
因此,如果我在结果中使用 a where
,EmployeeID
我可以让员工和他负责的每个人都高于他的职级。
我试图用递归 cte 来解决它,但这似乎根本没有解决。
有什么建议/想法吗?
解决方案
尝试这个:
with cte1(EmployeeID, ManagerID) as
(
select EmployeeID, max(ManagerID)
from Employees
group by EmployeeID
union all
select t2.EmployeeID, t1.ManagerID
from Employees t1
join cte1 t2 on t2.ManagerID = t1.EmployeeID
)
select * from cte1
order by EmployeeID desc, ManagerID desc
推荐阅读
- python - 更改对象补丁以外的其他属性的返回值
- reactjs - Web 应用中的 Firebase 通知收件箱(非 FCM)
- javascript - event.persisted 在 pagehide 和 pageshow 上始终为 false,但垂直滚动位置被保存
- java - 为什么Controller中注入服务实例的属性为空?使用“新”运算符、@Autowired、@PostConstruct 初始化时间线?
- javascript - React - JSON 文件不会呈现
- global-variables - Cypress - Setting global variable from one test to use in other tests
- angular - 如何使用 RxStompService 获取 Angular 8 上消息的最新偏移量?
- java - 使用 java jmx 获取 apache kafka 代理指标
- liferay - Liferay 7.2 - 在自定义 jsp 挂钩中使用 journalarticle 类
- apache - Apache 模块 mod_proxy_wstunnel 不工作