如何编写SQL生成从员工ID100开始的层级员工及上级姓名、职级树遍历列表
问题原因
你现有SQL的核心问题如下:
- 输出的「Manager Name」字段直接取了
e.manager_id,这个字段是经理的员工编号,并非经理的姓氏,和你需要的直属经理姓氏的需求不符。
修正后的SQL语句
SELECT LEVEL AS "POSITION", e.last_name AS "员工姓氏", PRIOR e.last_name AS "Manager Name" FROM employees e START WITH e.employee_id = 100 CONNECT BY PRIOR e.employee_id = e.manager_id ORDER SIBLINGS BY e.last_name;
逻辑说明
PRIOR e.last_name直接取层级查询中当前节点的父节点(即直属上级)的姓氏,正好匹配直属经理姓氏的需求- 最高级管理者(员工ID100)没有上级,对应的经理姓名字段会返回空值,符合层级逻辑
- 保留了原有的
START WITH和ORDER SIBLINGS逻辑,满足从100号员工开始统计、同职级按姓氏排序的要求
内容的提问来源于stack exchange,提问作者StressCodingCok
相关产品推荐
相关产品推荐

