CREATE TABLE employees (
emp_id NUMBER,
emp_name VARCHAR2(100),
manager_id NUMBER
);
INSERT INTO employees (emp_id, emp_name, manager_id) VALUES (1, 'Alice', NULL); -- CEO
INSERT INTO employees (emp_id, emp_name, manager_id) VALUES (2, 'Bob', 1); -- Reports to Alice
INSERT INTO employees (emp_id, emp_name, manager_id) VALUES (3, 'Carol', 1); -- Reports to Alice
INSERT INTO employees (emp_id, emp_name, manager_id) VALUES (4, 'Dave', 2); -- Reports to Bob
INSERT INTO employees (emp_id, emp_name, manager_id) VALUES (5, 'Eve', 2); -- Reports to Bob
INSERT INTO employees (emp_id, emp_name, manager_id) VALUES (6, 'Frank', 3); -- Reports to Carol
INSERT INTO employees (emp_id, emp_name, manager_id) VALUES (7, 'Grace', 4); -- Reports to Dave
select * from employees;
SELECT
LPAD(' ', LEVEL * 2) || emp_name AS employee_hierarchy,
emp_id,
manager_id,
LEVEL
FROM employees
START WITH manager_id IS NULL
CONNECT BY PRIOR emp_id = manager_id;
SELECT emp_name, LEVEL
FROM employees
START WITH manager_id IS NULL
CONNECT BY PRIOR emp_id = manager_id;