我正在与PeopleSoft的查询管理器合作,我在创建报告时遇到问题,该报告将找到所有没有特定休假类型的活跃员工。
我有两个表(Employees - Non terminated Employees和Leave_Accrual-EE)。它们被外部连接起来。有问题的字段是PLAN_TYPE。现在,我已经尝试创建一个过滤器来吸引所有没有计划类型54的员工。标准是B.PLAN_TYPE不等于54,但这仍然会带来所有人,它只是没有提出行54.
我觉得我错过了一些明显的东西 - 也许我必须创建一个子查询?如果是这样,我从未在PeopleSoft中这样做过。
有人有什么建议吗?
原始SQL截图。
已更新
答案 0 :(得分:1)
这不是一个PeopleSoft问题,更像是一个SQL问题。
您遇到的问题是您正在执行每行过滤器,并且只排除具有不良代码的行。
您需要做的是排除任何行中具有不良代码的用户的所有行。
这可以使用NOT IN或NOT EXISTS查询来完成。 e.g。
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