如何在PSQuery中添加空白提示的条件?

时间:2018-04-05 09:16:32

标签: sql oracle peoplesoft

我需要myPS Query的帮助。这是如下:

 SELECT A.EMPLID, B.STUDENT_ID, C.ADMIT_TERM, D.CHECKLIST_CD, 
 D.CHECKLIST_STATUS...
 FROM TABLE1 A, TABLE2 B, TABLE3C, TABLE4 D...
 WHERE……
 AND A.EMPLID = :1
 AND C.ADMIT_TERM = :2
 AND D.CHECKLIST_CD = :3
 AND D.CHECKLIST_STATUS = :4
 ….

现在有一些条件,其中未提供提示1,2,3和4,以下条件应该发生:

  • 所有具有不完整/正在进行的核对清单的学生将被显示,无论他们何时被创建。
  • 将显示所有在当前学期内完成核对清单的学生。

此时,如果所有提示都为空,我不知道如何添加条件。你能告诉我接下来需要做什么吗?子查询?表达

请帮助。

3 个答案:

答案 0 :(得分:1)

这与Littlefoot的答案基本相同,但我会尝试添加一些有关如何实现该解决方案的更多细节。这是我所做的查询示例,与您尝试执行的操作类似,在ORDER_NO字段上添加了一些调整,以演示您尝试执行的操作。我不知道如果没有提供所有提示,如何让它返回某些行,但是这将允许您为每个未提供的特定提示返回某些行。例如,如果您未提供核对表状态,则可以返回所有处于未完成和正在进行状态的学生。

请注意,这是PeopleSoft的一个非常旧的版本,因此您的界面可能不同。

首先,添加提示

enter image description here

现在,诀窍是让每个可选字段的WHERE子句像WHERE (D.CHECKLIST_STATUS = :4 OR (:4 = '' AND D.CHECKLIST_STATUS IN ('I', 'P'))一样工作(或者你的状态代码是什么)。这是如何做到的(再次,在我的旧版本)。 ORDER_NO字段上的逻辑类似于您需要的逻辑。

enter image description here

确保正确设置AND/OR运算符和括号。

enter image description here

点击'' equal to :2条件的编辑按钮,这就是它的样子

enter image description here

SQL看起来像这样

enter image description here

现在,当您运行查询时,您留空的任何提示字段都将不会用于过滤结果,或者将使用该字段的默认值。

答案 1 :(得分:0)

在Oracle中,通常按如下方式处理:

select ...
from ...
where (a.emplid      = :1 or :1 is null)
  and (c.admint_term = :2 or :2 is null)
  ...

答案 2 :(得分:0)

使用 LIKE 代替 = 运算符。例如

SELECT A.EMPLID,B.STUDENT_ID  FROM TABLE1 A.  哪里  AND A.EMPLID LIKE:1

如果要选择所有员工,则传递%in:1参数。