我将使用三个示例输入创建一个实时报告:
- 文件开始日期
- 文件结束日期
- 员工编号
这些是 SQL 表 DocumentData 中的 3 行。
我要重现的是以下内容:
如果用户没有在“Emp ID”字段中输入任何值,它应该显示所有“文档开始日期”和“文档结束日期”。否则,仅应显示与该“Emp ID”对应的值。
这可能很简单,但我仍然需要查询。
使用 anOR
并将值传递给查询两次。
在通用查询代码中(不知道 livelink 如何进行调用)
SELECT * FROM DOCUMENT
WHERE CREATED_DATE BETWEEN $startDate AND $endDate
AND (EMP_ID = $empId OR $empId IS NULL)
也许这可能是一个解决方案:
-- should work perfectly
select *
from DocumentData
where
case
when :emp_id is null then 1 -- attention :emp_id introduced in stead of emp_id
when emp_id = :emp_id then 1
else 0
end = 1
:emp_id
应该是来自应用程序的变量(用户正在更改的字段)。1
语句中的充当case when
条件true
。