3

저는 BI Publisher를 처음 사용하고 있으며 Oracle Fusion Applications를 통해 사용하고 있습니다.Oracle Fusion에서 BI Publisher를 사용하여 비활성 직원을 쿼리하는 방법?

조직의 비활성 직원에 관한 보고서를 작성하려고합니다. 그러나 비활성 또는 종료 된 직원을 쿼리하는 방법을 파악할 수 없습니다.

SELECT PERSON_ID, PERSON_NUMBER, EFFECTIVE_START_DATE, EFFECTIVE_END_DATE 

FROM PER_ALL_PEOPLE_F 

WHERE TRUNC(SYSDATE) NOT BETWEEN TRUNC(EFFECTIVE_START_DATE) AND TRUNC(EFFECTIVE_END_DATE) 

내 다른 고려 사항은 PRIMARY_WORK_RELATION_FLAG, PRIMARY_ASSIGNMENT_FLAG 및 직원의 할당 정보가 어떻게 든 도움이 될 것으로 생각 ASSIGNMENT_TYPE을 포함하여 PER_ALL_ASSIGNMENTS_M 테이블의 속성과 같다 :

나는 처음에이 쿼리를 사용했다. 그러나 나는 실패했다.

비활성 직원을 쿼리하는 다른 적절한 방법이 있는지 알고 싶었습니다. 어떤 테이블에 특정 직원이 근무 중이거나 해고 당했다는 것을 알려주는 특정 속성이 있습니까? Oracle Fusion에서 종업원이 종료되면 모든 테이블 속성이 영향을 받습니까?

도움 주셔서 감사합니다.

답변

2

내가 찾고있는 것을 찾았습니다. ASSIGNMENT_STATUS_TYPE = 'INACTIVE'는 내가 필요로하는 것이 었습니다. (이 솔루션은 'EFFECTIVE_END_DATE'를 고려하지 않았습니다.) 직원의 최신 임무 지위를 얻는 것이 필요했습니다. 다음 쿼리는 직원에게 할당 된 할당이 하나만있는 경우 작동합니다.

SELECT PAPF.PERSON_ID, PAPF.PERSON_NUMBER 
FROM PER_ALL_PEOPLE_F PAPF, PER_ALL_ASSIGNMENTS_M PAAM 

WHERE 1=1 
AND TRUNC(PAAM.EFFECTIVE_START_DATE) = (SELECT MAX(TRUNC(PAAM_INNER.EFFECTIVE_START_DATE)) 
       FROM PER_ALL_ASSIGNMENTS_M PAAM_INNER 
       WHERE PAAM_INNER.PERSON_ID=PAAM.PERSON_ID 
       GROUP BY PAAM_INNER.PERSON_ID) 

AND PAPF.PERSON_ID=PAAM.PERSON_ID 
AND PAAM.PRIMARY_FLAG='Y' 
AND PAAM.ASSIGNMENT_STATUS_TYPE='INACTIVE' 
AND TRUNC(SYSDATE) BETWEEN PAAM.EFFECTIVE_START_DATE AND PAAM.EFFECTIVE_END_DATE 
AND TRUNC(SYSDATE) BETWEEN PAPF.EFFECTIVE_START_DATE AND PAPF.EFFECTIVE_END_DATE 

ORDER BY 1 ASC 

답변을 얻기 위해 Oracle Support Community의 도움을 받았습니다. 링크 : 직원이 과제를 주어진 경우에 그러나 https://community.oracle.com/message/14000136#14000136

년 2000에서 시작하여 20,015에서 끝나는 말을 한 후 2016에서 시작하는 또 다른 과제는 현재까지, 위의 쿼리는 말했다 직원 등의 하나 개의 레코드를 반환합니다 Max Effective_start_date 조건을 확인하지 않으면 '비활성'입니다. 현재 할당 상태가 '활성'이고 현재 종료되지 않은 경우에도 (2015 년에 비활성 상태가 된 이후) 이러한 경우

, EFFECTIVE_START_DATE = MAX (EFFECTIVE_START_DATE가)

3

이 작업을 수행하는 가장 쉬운 방법은 간단하다 :

SELECT * FROM YourTable t 
WHERE TRUNC(t.END_DATE) <= trunc(sysdate) 

어떤 시간도 IS_ACTIVE이나 뭐 같은 표시 열이 있습니다. 또한 추가하는 것을 고려하고 위의 쿼리에서 반환 된 모든 레코드에 대해이를 1로 업데이트하면됩니다.

그 외에도, 우리는 정말로 당신을 도울 수 없습니다. 테이블 구조는 알지 못합니다. 어떤 테이블에 어떤 데이터를 저장하고 어떤 열을 표시하는지 알 수 없습니다.

+0

내가 다른 대안이 있는지 알고 싶다면 체크, 즉 PER_ALL_ASSIGNMENTS_M 테이블에서 가장 큰 'EFFECTIVE_START_DATE'와 레코드를 검색하는 것이 현명하다 내가이 질문에서 언급 한 접근법 옆에서 일반적으로 행해진 접근법. '활성'상태에 대해서는 BEN_EXTRACT_REQ_DETAILS 테이블에 EMPLOYMENT_STATUS 특성이 있습니다. 불행히도 데이터가 일관되지 않았습니다. HCM 테이블의 다른 유용한 속성을 알고 있다면 도움이 될 것입니다. –

+0

모두가 DB를 다르게 디자인하므로 일반적인 솔루션이 없습니다. 나는 당신에게'EMPLOYEMENT_STATUS'를 당신의 자기 자신을 업데이트하여 올바른 것이라고 말했습니다. – sagi