如何在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 看起来像这样
现在当您 运行 查询时,您留空的任何提示字段将不会用于过滤结果,或者将使用该字段的默认值。
我需要有关 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 看起来像这样
现在当您 运行 查询时,您留空的任何提示字段将不会用于过滤结果,或者将使用该字段的默认值。