1

好的,所以我在这里挣扎。我们有一个跟踪某个用户 ID 的表。一行有 ID,第二行有非活动 ID。它看起来像这样:

B.MISC_INFO 日期 B.MISC_VALUE
积极的 20 年 1 月 1 日 BXXXX
不活跃 21 年 1 月 1 日 BXXXX
积极的 22 年 1 月 1 日 B2XXX

我使用查询管理器创建了一个报告,它同时引入了两种活动状态。我需要它只拉入活动状态而没有相应的非活动状态(在上面的示例中,“B2XXX”值)。

现在视图 SQL 选项卡上的 SQL 如下所示:

SELECT DISTINCT A.EMPLID, A.NAME, B.MISC_INFO, B.MISC_VALUE
  FROM ((PS_EMPLOYEES A INNER JOIN PS_EMPLMT_SRCH_QRY A1 ON (A.EMPLID = A1.EMPLID AND A.EMPL_RCD = A1.EMPL_RCD AND  A1.OPRID = 'XXXXXXXX' )) LEFT OUTER JOIN  PS_FTI_EMP_MISC2 B ON  A.EMPLID = B.EMPLID AND B.MISC_INFO = 'Active' )
  WHERE ( ( A.EFFDT =
        (SELECT MAX(A_ED.EFFDT) FROM PS_EMPLOYEES A_ED
        WHERE A.EMPLID = A_ED.EMPLID
          AND A.EMPL_RCD = A_ED.EMPL_RCD
          AND A_ED.EFFDT <= SUBSTRING(CONVERT(CHAR,GETDATE(),121), 1, 10))
    AND A.EFFSEQ =
        (SELECT MAX(A_ES.EFFSEQ) FROM PS_EMPLOYEES A_ES
        WHERE A.EMPLID = A_ES.EMPLID
          AND A.EMPL_RCD = A_ES.EMPL_RCD
          AND A.EFFDT = A_ES.EFFDT)
     AND B.MISC_VALUE LIKE 'B%' ))

我想过写一个案例陈述,但我想不通。

4

1 回答 1

2

有几种方法可以做到这一点。如果您使用的是 PeopleTools 8.56 或更高版本,您可以先编写一个查询来提取所有活动状态。删除此逻辑的有效日期逻辑。然后,您将使用复合查询来查询您的查询。这会将内部查询视为内联视图。然后,您将在复合查询中应用有效日期逻辑。

另一种选择是将活动状态标准置于有效日期逻辑中。为此,您将无法使用标准的有效日期逻辑。您将需要在 EFFDT 字段上创建自己的子查询条件。

于 2022-01-15T05:46:04.113 回答