WITH
reports_to_100 (eid, emp_last, mgr_id, reportLevel) AS
( --Anchor Member(不變成員)
SELECT employee_id, last_name, manager_id, 1 reportLevel
FROM employees
WHERE employee_id = 100
UNION ALL
--Recursive Member(遞迴成員)
SELECT e.employee_id, e.last_name, e.manager_id, reportLevel+1
FROM reports_to_100 r, employees e
WHERE r.eid = e.manager_id
)
SELECT eid, LPAD(emp_last, LENGTH(emp_last)+(reportLevel*2)-2,'_')
AS org_chart, mgr_id, reportLevel
FROM reports_to_100; |