Oracle Fusion HCM - Query to get Number of manager change for an employee

 ✅ Purpose

This query fetches the number of manager changes (specifically line manager) per employee between a selected date range, displaying current and historical manager assignments.

 ✅ Table details      

  • PER_ALL_PEOPLE_F – Employee personal data

  • PER_ALL_ASSIGNMENTS_M – Assignment-level data

  • PER_ASSIGNMENT_SUPERVISORS_F – Supervisor (manager) history

  • PER_PERIODS_OF_SERVICE – Employee service periods

  • PER_PERSON_NAMES_F – Full names of employees and managers

 ๐Ÿงพ Final SQL Query 

รฐ SELECT DISTINCT 
EMP.PERSON_NUMBER EMPLOYEE_NUMBER,
EMP_NAME.FULL_NAME EMP_NAME,
MGR_NAME.FULL_NAME MANAGER_NAME,
MGR.PERSON_NUMBER SUPERVISOR_EMP_NUMBER,
to_char(PASF.EFFECTIVE_START_DATE,'yyyy/mm/dd') EFFECTIVE_DATE_DATA_CHANGE,
to_char(PASF.EFFECTIVE_START_DATE,'yyyy/mm/dd') EFFECTIVE_DATE_MANAGER, 
FLV.MEANING MANAGER_TYPE,
(COUNT(DISTINCT MGR.PERSON_NUMBER ) OVER (PARTITION BY EMP.PERSON_ID)) Mgr_count  

FROM
PER_ALL_PEOPLE_F    EMP,
PER_ALL_ASSIGNMENTS_M   PAAM_EMP,
PER_ASSIGNMENT_SUPERVISORS_F PASF,
PER_ALL_PEOPLE_F    MGR,
PER_PERIODS_OF_SERVICE PPS,
PER_PERSON_NAMES_F    EMP_NAME,
PER_PERSON_NAMES_F    MGR_NAME,
FND_LOOKUP_VALUES FLV
WHERE
EMP.PERSON_ID = PAAM_EMP.PERSON_ID
AND PAAM_EMP.PRIMARY_ASSIGNMENT_FLAG = 'Y'
AND PAAM_EMP.ASSIGNMENT_TYPE = 'E'
and PAAM_EMP.PRIMARY_FLAG='Y'
AND PAAM_EMP.EFFECTIVE_LATEST_CHANGE = 'Y'
AND ACTION_CODE  ='MANAGER_CHANGE'
AND EMP.PERSON_ID = PASF.PERSON_ID
AND PASF.ASSIGNMENT_ID = PAAM_EMP.ASSIGNMENT_ID
AND PASF.MANAGER_TYPE in('LINE_MANAGER')
AND MGR.PERSON_ID = PASF.MANAGER_ID
AND PAAM_EMP.PERIOD_OF_SERVICE_ID = PPS.PERIOD_OF_SERVICE_ID
AND PAAM_EMP.PERSON_ID = PPS.PERSON_ID
AND  PPS.DATE_START= (SELECT MAX(DATE_START) FROM PER_PERIODS_OF_SERVICE PPOS_IN WHERE EMP.PERSON_ID=PPOS_IN.PERSON_ID AND PPOS_IN.   PRIMARY_FLAG='Y')
AND MGR.PERSON_ID=MGR_NAME.PERSON_ID
AND MGR_NAME.NAME_TYPE = 'GLOBAL'
AND EMP.PERSON_ID = EMP_NAME.PERSON_ID 
AND EMP_NAME.NAME_TYPE = 'GLOBAL'
AND FLV.LOOKUP_TYPE ='PER_SUPERVISOR_TYPE' 
AND FLV.LOOKUP_CODE= PASF.MANAGER_TYPE 
and FLV.LANGUAGE='US'
AND TRUNC(PAAM_EMP.EFFECTIVE_START_DATE) BETWEEN EMP_NAME.EFFECTIVE_START_DATE AND EMP_NAME.EFFECTIVE_END_DATE
AND TRUNC(PAAM_EMP.EFFECTIVE_START_DATE) BETWEEN MGR_NAME.EFFECTIVE_START_DATE AND MGR_NAME.EFFECTIVE_END_DATE
AND TRUNC(PAAM_EMP.EFFECTIVE_START_DATE) BETWEEN EMP.EFFECTIVE_START_DATE AND EMP.EFFECTIVE_END_DATE
AND TRUNC(PAAM_EMP.EFFECTIVE_START_DATE) BETWEEN MGR.EFFECTIVE_START_DATE AND MGR.EFFECTIVE_END_DATE
AND TRUNC(PAAM_EMP.EFFECTIVE_START_DATE) BETWEEN PASF.EFFECTIVE_START_DATE AND PASF.EFFECTIVE_END_DATE
AND  to_date(TO_CHAR( PAAM_EMP.EFFECTIVE_START_DATE,'MM/DD/YYYY'),'MM/DD/YYYY') between to_DATE(:Effective_Date_From,'MM/DD/YYYY') and to_DATE(:Effective_Date_To,'MM/DD/YYYY')
ORDER BY EMP.PERSON_NUMBER

Comments

Popular posts from this blog

Query to get Salary Change details in Fusion HCM

๐Ÿงพ Streamlining Payroll Operations with Oracle Payroll Activity Center

Oracle Fusion HCM - Enhancements to Summary of Changes and History Sections in Redwood Workforce Structures Pages