3

Oracle 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'を考慮していません)従業員の最新の割り当てステータスを取得することが必要でした。従業員に代入が1つだけ割り当てられている場合、次のクエリが機能します。

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サポートコミュニティから回答を得るために助けがありました。 リンク:https://community.oracle.com/message/14000136#14000136

しかし、ある従業員が2000年から20015年にかけて割り当てを与えられた場合、2016年から別の割り当てが今までのところ、上記のクエリはその従業員の1つのレコードを返します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