【问题标题】:How to query for Inactive Employees using BI Publisher in Oracle Fusion?如何在 Oracle Fusion 中使用 BI Publisher 查询非活动员工?
【发布时间】:2016-08-29 12:04:24
【问题描述】:

我是 BI Publisher 的新手,我正在通过 Oracle Fusion Applications 使用它。

我正在尝试就组织中的非活跃员工进行报告。但是,我无法弄清楚如何查询不活跃或已离职的员工。

我最初使用这个查询:

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)

我的其他考虑因素是 PER_ALL_ASSIGNMENTS_M 表中的属性,包括 PRIMARY_WORK_RELATION_FLAG、PRIMARY_ASSIGNMENT_FLAG 和 ASSIGNMENT_TYPE,考虑到员工的分配详细信息会有所帮助。但是我没有成功。

我想知道是否有任何其他合适的方法来查询不活跃的员工。任何表格中是否有任何特定属性可以肯定地告诉我员工是活跃的还是终止的?当员工在 Oracle Fusion 中终止时,哪些所有表属性都会受到影响?

感谢您的帮助。

【问题讨论】:

    标签: oracle business-intelligence bi-publisher oracle-fusion-middleware oracle-fusion-apps


    【解决方案1】:

    最简单的方法就是:

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

    有时还会有IS_ACTIVE 之类的指示列。您也可以考虑添加它,并简单地将上述查询返回的所有记录更新为 1。

    除此之外,我们真的无法为您提供帮助。我们不知道您的表结构,我们不知道您在其中存储了哪些数据以及哪一列表示什么。

    【讨论】:

    • 我想知道除了我在问题中提到的方法之外,是否还有其他替代方法。至于“活动”状态,我在 BEN_EXTRACT_REQ_DETAILS 表中找到了一个 EMPLOYMENT_STATUS 属性。不幸的是,这有不一致的数据。如果您知道 HCM 表中的任何其他有用属性,那将会很有帮助。
    • 每个人都设计不同的数据库,没有通用的解决方案。我告诉过你,只需更新你自己的EMPLOYEMENT_STATUS,这样它就会正确。
    【解决方案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 支持社区帮助我找到了答案。 链接:https://community.oracle.com/message/14000136#14000136

    但是,如果给员工分配了从 2000 年开始到 20015 年结束的任务,然后是从 2016 年至今的另一项任务,则上述查询将返回该员工的一条记录为“非活动”,如果不检查 Max Effective_start_date 条件。 (因为一个在 2015 年变得不活跃),即使她当前的分配状态是“活跃”并且她目前没有被终止。

    在这种情况下,明智的做法是从 PER_ALL_ASSIGNMENTS_M 表中检索具有最大 'EFFECTIVE_START_DATE' 的记录,即检查是否 EFFECTIVE_START_DATE = MAX(EFFECTIVE_START_DATE)

    【讨论】:

      猜你喜欢
      • 2022-06-13
      • 1970-01-01
      • 2023-02-01
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多