【问题标题】:PeopleSoft Query - finding people without leave typePeopleSoft 查询 - 查找无休假类型的人员
【发布时间】:2018-01-08 16:50:48
【问题描述】:

我正在与 PeopleSoft 的查询经理一起工作,但我无法创建一个报告来查找所有没有特定休假类型的在职员工。

我有两个表(员工 - 未终止的员工和 Leave_Accrual-EE)。它们是左外连接的。有问题的字段是 PLAN_TYPE。现在,我尝试创建一个过滤器来拉入所有没有计划类型 54 的员工。标准是 B.PLAN_TYPE 不等于 54,但这仍然会显示所有人,只是没有显示为54.

我觉得我遗漏了一些明显的东西——也许我必须创建一个子查询?如果是这样,我从来没有在 PeopleSoft 中这样做过。

有人有什么建议吗?

原始 SQL 截图。

更新

【问题讨论】:

    标签: peoplesoft


    【解决方案1】:

    这不是一个 PeopleSoft 问题,而是一个 SQL 问题。

    您遇到的问题是您正在执行每行过滤器并仅排除具有不良代码的行。

    您需要做的是排除任何行中包含不良代码的用户的所有行。

    这可以通过 NOT IN 或 NOT EXISTS 查询来完成。 例如

    SELECT EMPLID
    FROM TABLE1
    WHERE 
       EMPLID NOT IN 
       (
          SELECT EMPLID 
          FROM TABLE1 
          WHERE CODE = 123
       )
    /
    

    交替

    SELECT A.EMPLID
    FROM TABLE1 A
    WHERE 
       NOT EXISTS 
       (
          SELECT B.EMPLID 
          FROM TABLE1 B
          WHERE 
             B.CODE = 123
             AND B.EMPLID = A.EMPLID
       )
    /
    

    查看这个 SQL Fiddle 示例来测试 SQL: http://sqlfiddle.com/#!4/2b0f6/7

    要在 PS Query 中执行此操作,您可以通过在等价的右侧添加带有子查询的条件来执行此操作。

    这里有一些文档:

    Home > PeopleSoft PeopleTools 8.53 > PeopleSoft Query > Working with Subqueries

    【讨论】:

    • 我觉得你给了我正确的方向,但我仍然做错了什么。在查询的顶层,我有: AND A.EMPLID - Empl ID 不在列表中 子查询。然后在子查询中我有:C.Plan_Type - 计划类型等于 54。我想我是说找到 不在计划类型 54 的列表中 的 Empl ID,但看起来拉动所有人和每种计划类型(包括 54 种)。
    • 您是否有权访问“查看 SQL”选项卡?它显示了什么?
    • 我已经添加了它的图片。我还拿出了我的 operatorID。
    • @Phlegon_of_Tralles - 查看your screenshot,您的 NOT IN 查询应该选择与外部查询相同的字段。即A.EMPLID not in (SELECT C.EMPLID FROM ...),但目前您没有选择与外部过滤相同的字段,即A.EMPLID not in (SELECT C.PLAN_TYPE ...)
    • 感谢您抽出宝贵时间。我已经更新了脚本,它大大减少了记录的数量,它似乎仍然没有得到正确的信息。名单上的第一人有计划 54。所以我不知道报告在拉什么。
    猜你喜欢
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多