Oracle HRMS SQL Query to find out Employee and their Supervisor Hierarchy

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT     LEVEL, e.*
      FROM (SELECT DISTINCT papf.person_id, papf.employee_number,
                            papf.full_name "EMPLOYEE_FULL_NAME",
                            paaf.supervisor_id,
                            papf1.employee_number "SUPERVISOR_EMP_NUMBER",
                            papf1.full_name "SUPERVISOR_FULL_NAME"
                       FROM apps.per_all_people_f papf,
                            apps.per_all_assignments_f paaf,
                            apps.per_all_people_f papf1,
                            apps.per_person_types ppt
                      WHERE papf.person_id = paaf.person_id
                        AND papf1.person_id = paaf.supervisor_id
                        AND papf.business_group_id = 142
                        AND papf.business_group_id = paaf.business_group_id
                        AND TRUNC (SYSDATE) BETWEEN papf.effective_start_date
                                                AND papf.effective_end_date
                        AND TRUNC (SYSDATE) BETWEEN paaf.effective_start_date
                                                AND paaf.effective_end_date
                        AND ppt.person_type_id = papf.person_type_id
                        AND ppt.user_person_type <> 'Ex-employee') e
CONNECT BY PRIOR person_id = supervisor_id
START WITH person_id = 6002;
 
--6002 is the starting person_id