【问题标题】:PeopleSoft Query Manager - isolating a rowPeopleSoft 查询管理器 - 隔离一行
【发布时间】:2022-01-14 21:45:21
【问题描述】:

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

B.MISC_INFO Date B.MISC_VALUE
Active 1/1/20 BXXXX
Inactive 1/1/21 BXXXX
Active 1/1/22 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%' ))

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

【问题讨论】:

    标签: peoplesoft peoplecode peoplesoft-app-engine


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 2020-03-13
      • 1970-01-01
      相关资源
      最近更新 更多