SELECT USER_NAME , USER_ID , EMAIL_ADDRESS , PERSON_FIRST_NAME , PERSON_LAST_NAME , PARTY_ID , PERSON_ID FROM ( SELECT FU.USER_NAME , FU.USER_ID , FU.EMAIL_ADDRESS , NULL AS PERSON_FIRST_NAME , NULL AS PERSON_LAST_NAME , NULL AS PARTY_ID , NULL AS PERSON_ID FROM FND_USER FU WHERE FU.PERSON_PARTY_ID IS NULL AND FU.EMPLOYEE_ID IS NULL UNION ALL SELECT FU.USER_NAME , FU.USER_ID , FU.EMAIL_ADDRESS , HPR.PERSON_FIRST_NAME , HPR.PERSON_LAST_NAME , HPR.PARTY_ID , NULL AS PERSON_ID FROM FND_USER FU , HZ_PARTIES HPR WHERE FU.PERSON_PARTY_ID IS NOT NULL AND FU.EMPLOYEE_ID IS NULL AND FU.PERSON_PARTY_ID = HPR.PARTY_ID UNION ALL SELECT FU.USER_NAME , FU.USER_ID , FU.EMAIL_ADDRESS , EMP.FIRST_NAME , EMP.LAST_NAME , NULL AS PARTY_ID , EMP.PERSON_ID AS PERSON_ID FROM FND_USER FU , PER_ALL_PEOPLE_F EMP WHERE FU.EMPLOYEE_ID IS NOT NULL AND FU.EMPLOYEE_ID = EMP.PERSON_ID AND NVL(EMP.EFFECTIVE_END_DATE , SYSDATE + 1) > SYSDATE AND EMP.EFFECTIVE_START_DATE <= SYSDATE )