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

How to add conditions for blank prompts in PSQuery?

我需要有关 myPS 查询的帮助。下面是这样的:

 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没有提供,下面的情况应该发生:

此时,如果所有这些提示都是空白,我不知道如何添加条件。你能告诉我下一步需要做什么吗?子查询?表达式?

请帮忙。

在Oracle中,通常是这样处理的:

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

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

SELECT A.EMPLID, B.STUDENT_ID 来自表 1 A 在哪里 和 A.EMPLID 喜欢 :1

如果你想 select 所有员工然后在 :1 参数中传递 %。

这与 Littlefoot 的回答基本相同,但我将尝试添加更多有关如何完成该解决方案的详细信息。这是我执行的查询示例,与您尝试执行的查询类似,只是在 ORDER_NO 字段中添加了一些调整以演示您正在尝试执行的操作。我不知道如何只在未提供 所有 提示的情况下使它成为 return 某些行,但这会让你 return 每个特定提示的某些行没有提供。例如,如果您不提供清单状态,那么您可以 return 所有处于未完成和进行中状态的学生。

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

首先,添加您的提示

现在,诀窍是让每个可选字段的 WHERE 子句像 WHERE (D.CHECKLIST_STATUS = :4 OR (:4 = '' AND D.CHECKLIST_STATUS IN ('I', 'P')) 一样工作(或任何您的状态代码)。这是执行此操作的方法(同样,在我的旧版本上)。 ORDER_NO 字段的逻辑与您需要的相似。

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

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

SQL 看起来像这样

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