Query to fetch those employees who has duplicate payroll relationship attached in Fusion HCM
SELECT
PAP.PERSON_NUMBER,
PPN.FULL_NAME,
PA.ASSIGNMENT_NUMBER,
PAY.PAYROLL_NAME,
TO_CHAR(PAD.START_DATE,'YYYY-MM-DD') AS START_DATE,
TO_CHAR(PAD.END_DATE,'YYYY-MM-DD') AS END_DATE
FROM
PER_ALL_PEOPLE_F PAP,
PER_ALL_ASSIGNMENTS_M PA,
PAY_ALL_PAYROLLS_F PAY,
PAY_REL_GROUPS_DN PREL,
PAY_ASSIGNED_PAYROLLS_DN PAD,
PER_PERSON_NAMES_F PPN
WHERE
PA.ASSIGNMENT_NUMBER=PREL.ASSIGNMENT_NUMBER
AND PREL.PARENT_REL_GROUP_ID= PAD.PAYROLL_TERM_ID
AND PAD.PAYROLL_ID=PAY.PAYROLL_ID
AND PA.PERSON_ID=PAP.PERSON_ID
AND PA.ASSIGNMENT_TYPE='E'
AND PAP.PERSON_ID = PPN.PERSON_ID
AND PPN.NAME_TYPE = 'GLOBAL'
AND PAP.PERSON_ID IN (SELECT
PAP.PERSON_ID
FROM
PER_ALL_PEOPLE_F PAP,
PER_ALL_ASSIGNMENTS_M PA,
PAY_ALL_PAYROLLS_F PAY,
PAY_REL_GROUPS_DN PREL,
PAY_ASSIGNED_PAYROLLS_DN PAD,
PER_PERSON_NAMES_F PPN
WHERE
PA.ASSIGNMENT_NUMBER=PREL.ASSIGNMENT_NUMBER
AND PREL.PARENT_REL_GROUP_ID= PAD.PAYROLL_TERM_ID
AND PAD.PAYROLL_ID=PAY.PAYROLL_ID
AND PA.PERSON_ID=PAP.PERSON_ID
AND PA.ASSIGNMENT_TYPE='E'
AND PAP.PERSON_ID = PPN.PERSON_ID
AND PPN.NAME_TYPE = 'GLOBAL'
AND PA.ASSIGNMENT_SEQUENCE = (SELECT MAX(ASSIGNMENT_SEQUENCE) FROM PER_ALL_ASSIGNMENTS_M WHERE PERSON_ID = PAP.PERSON_ID AND ASSIGNMENT_TYPE IN ('E','C') AND SYSDATE BETWEEN EFFECTIVE_START_DATE AND EFFECTIVE_END_DATE)
AND PA.EFFECTIVE_LATEST_CHANGE = 'Y'
AND PAD.START_DATE BETWEEN PAP.EFFECTIVE_START_DATE AND PAP.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PA.EFFECTIVE_START_DATE AND PA.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PAY.EFFECTIVE_START_DATE AND PAY.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PPN.EFFECTIVE_START_DATE AND PPN.EFFECTIVE_END_DATE
GROUP BY PAP.PERSON_ID
HAVING COUNT(PAP.PERSON_ID) > 1)
AND PA.ASSIGNMENT_SEQUENCE = (SELECT MAX(ASSIGNMENT_SEQUENCE) FROM PER_ALL_ASSIGNMENTS_M WHERE PERSON_ID = PAP.PERSON_ID AND ASSIGNMENT_TYPE IN ('E','C') AND SYSDATE BETWEEN EFFECTIVE_START_DATE AND EFFECTIVE_END_DATE)
AND PA.EFFECTIVE_LATEST_CHANGE = 'Y'
AND PAD.START_DATE BETWEEN PAP.EFFECTIVE_START_DATE AND PAP.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PA.EFFECTIVE_START_DATE AND PA.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PAY.EFFECTIVE_START_DATE AND PAY.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PPN.EFFECTIVE_START_DATE AND PPN.EFFECTIVE_END_DATE
ORDER BY PAP.PERSON_NUMBER
PAP.PERSON_NUMBER,
PPN.FULL_NAME,
PA.ASSIGNMENT_NUMBER,
PAY.PAYROLL_NAME,
TO_CHAR(PAD.START_DATE,'YYYY-MM-DD') AS START_DATE,
TO_CHAR(PAD.END_DATE,'YYYY-MM-DD') AS END_DATE
FROM
PER_ALL_PEOPLE_F PAP,
PER_ALL_ASSIGNMENTS_M PA,
PAY_ALL_PAYROLLS_F PAY,
PAY_REL_GROUPS_DN PREL,
PAY_ASSIGNED_PAYROLLS_DN PAD,
PER_PERSON_NAMES_F PPN
WHERE
PA.ASSIGNMENT_NUMBER=PREL.ASSIGNMENT_NUMBER
AND PREL.PARENT_REL_GROUP_ID= PAD.PAYROLL_TERM_ID
AND PAD.PAYROLL_ID=PAY.PAYROLL_ID
AND PA.PERSON_ID=PAP.PERSON_ID
AND PA.ASSIGNMENT_TYPE='E'
AND PAP.PERSON_ID = PPN.PERSON_ID
AND PPN.NAME_TYPE = 'GLOBAL'
AND PAP.PERSON_ID IN (SELECT
PAP.PERSON_ID
FROM
PER_ALL_PEOPLE_F PAP,
PER_ALL_ASSIGNMENTS_M PA,
PAY_ALL_PAYROLLS_F PAY,
PAY_REL_GROUPS_DN PREL,
PAY_ASSIGNED_PAYROLLS_DN PAD,
PER_PERSON_NAMES_F PPN
WHERE
PA.ASSIGNMENT_NUMBER=PREL.ASSIGNMENT_NUMBER
AND PREL.PARENT_REL_GROUP_ID= PAD.PAYROLL_TERM_ID
AND PAD.PAYROLL_ID=PAY.PAYROLL_ID
AND PA.PERSON_ID=PAP.PERSON_ID
AND PA.ASSIGNMENT_TYPE='E'
AND PAP.PERSON_ID = PPN.PERSON_ID
AND PPN.NAME_TYPE = 'GLOBAL'
AND PA.ASSIGNMENT_SEQUENCE = (SELECT MAX(ASSIGNMENT_SEQUENCE) FROM PER_ALL_ASSIGNMENTS_M WHERE PERSON_ID = PAP.PERSON_ID AND ASSIGNMENT_TYPE IN ('E','C') AND SYSDATE BETWEEN EFFECTIVE_START_DATE AND EFFECTIVE_END_DATE)
AND PA.EFFECTIVE_LATEST_CHANGE = 'Y'
AND PAD.START_DATE BETWEEN PAP.EFFECTIVE_START_DATE AND PAP.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PA.EFFECTIVE_START_DATE AND PA.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PAY.EFFECTIVE_START_DATE AND PAY.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PPN.EFFECTIVE_START_DATE AND PPN.EFFECTIVE_END_DATE
GROUP BY PAP.PERSON_ID
HAVING COUNT(PAP.PERSON_ID) > 1)
AND PA.ASSIGNMENT_SEQUENCE = (SELECT MAX(ASSIGNMENT_SEQUENCE) FROM PER_ALL_ASSIGNMENTS_M WHERE PERSON_ID = PAP.PERSON_ID AND ASSIGNMENT_TYPE IN ('E','C') AND SYSDATE BETWEEN EFFECTIVE_START_DATE AND EFFECTIVE_END_DATE)
AND PA.EFFECTIVE_LATEST_CHANGE = 'Y'
AND PAD.START_DATE BETWEEN PAP.EFFECTIVE_START_DATE AND PAP.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PA.EFFECTIVE_START_DATE AND PA.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PAY.EFFECTIVE_START_DATE AND PAY.EFFECTIVE_END_DATE
AND PAD.START_DATE BETWEEN PPN.EFFECTIVE_START_DATE AND PPN.EFFECTIVE_END_DATE
ORDER BY PAP.PERSON_NUMBER
Comments
Post a Comment