Query : To get Active Employees and Terminated Employees

SELECT
PAAF.ASSIGNMENT_ID,
PAPF.PERSON_ID AS PERSON_ID2,
PAPF.FIRST_NAME AS FIRST_NAME,
PAPF.LAST_NAME AS LAST_NAME,
PAPF.EMAIL_ADDRESS AS EMAIL_ADDRESS,
TO_CHAR(PPS.ACTUAL_TERMINATION_DATE) AS ACTUAL_TERMINATION_DATE,
TO_CHAR(PAPF.EFFECTIVE_START_DATE) AS EFFECTIVE_START_DATE,
PAPF.EMPLOYEE_NUMBER AS EMPLOYEE_NUMBER,
TO_CHAR(PAPF.EFFECTIVE_END_DATE) AS EFFECTIVE_END_DATE,
PAPF.BUSINESS_GROUP_ID AS BUSINESS_GROUP_ID,
PAAF.SUPERVISOR_ID AS SUPERVISOR_ID ,
PAPF.LAST_UPDATE_DATE papf_update_date,
PAAF.LAST_UPDATE_DATE paaf_update_date,
ppt.user_person_type
FROM
PER_ALL_PEOPLE_F PAPF,
PER_ALL_ASSIGNMENTS_F PAAF,
PER_PERIODS_OF_SERVICE PPS,
hr.per_person_type_usages_f pptu,
hr.per_person_types ppt
WHERE PAAF.PERSON_ID = PAPF.PERSON_ID
AND PAAF.PRIMARY_FLAG = 'Y'
--AND PAPF.CURRENT_EMPLOYEE_FLAG = 'Y'
and paaf.assignment_type != 'B' --conditional
and pptu.effective_start_date between
papf.effective_start_date and papf.effective_end_date
and papf.person_id = pptu.person_id
and papf.person_type_id = pptu.person_type_id
and pptu.person_type_id = ppt.person_type_id
and papf.person_type_id = ppt.person_type_id
and papf.business_group_id = ppt.business_group_id
AND PAAF.period_of_service_id = PPS.period_of_service_id
and papf.person_id = pps.person_id
AND (
(ppt.user_person_type like 'Ex-employee%'
and PPS.ACTUAL_TERMINATION_DATE between paaf.effective_start_date and PAAF.EFFECTIVE_END_DATE)
or
( ppt.user_person_type like 'Employee%'
and trunc(sysdate) between paaf.effective_start_date and PAAF.EFFECTIVE_END_DATE )
)
AND (
(ppt.user_person_type like 'Ex-employee%'
and PPS.ACTUAL_TERMINATION_DATE between papf.effective_start_date and PAPF.EFFECTIVE_END_DATE)
or
(ppt.user_person_type like 'Employee%' and
trunc(sysdate) between papf.effective_start_date and PAPF.EFFECTIVE_END_DATE )
)

2 comments:

  1. How to know the destination of retired employee and
    current employee.
    Kindly support.

    Regards,
    Vishu

    ReplyDelete
  2. Thanks for usually support, we find the gap in our query

    ReplyDelete