我有一张桌子,我正在尝试在多个条件下运行查询
select POLICY_REFER,
END_REFER,
CLIENT_NAME,
POLICY_PRODUCT,
ISSUE_DATE,
GROSS,
DOC_TYPE,
DOC_STATUS
from POLICY_MASTER
发布日期:DFrom和:DTo
DOC_STATUS ='已停放'
这两个条件必须匹配
CLIENT_NAME =:客户端或CLIENT_NAME为空
POLICY_PRODUCT =:产品或POLICY_PRODUCT为空
这两个取决于我从中选择的组合框
select POLICY_REFER,
END_REFER,
CLIENT_NAME,
POLICY_PRODUCT,
ISSUE_DATE,
GROSS,
DOC_TYPE,
DOC_STATUS
from POLICY_MASTER
where ISSUE_DATE BETWEEN :DFrom AND :DTo
and CLIENT_NAME = :Client or CLIENT_NAME is null
and POLICY_PRODUCT = :Product or POLICY_PRODUCT is null
and DOC_STATUS = 'Parked'"....
此查询可以接受POLICY_PRODUCT为空,但不能与CLIENT_NAME一起使用为空...
答案 0 :(得分:1)
我怀疑问题是您缺少or
条件周围的方括号,例如我认为您的查询应遵循以下原则:
select POLICY_REFER,
END_REFER,
CLIENT_NAME,
POLICY_PRODUCT,
ISSUE_DATE,
GROSS,
DOC_TYPE,
DOC_STATUS
from POLICY_MASTER
where ISSUE_DATE BETWEEN :DFrom AND :DTo
and (CLIENT_NAME = :client or :client is null)
and (POLICY_PRODUCT = :product or :product is null)
and DOC_STATUS = 'Parked'"....
答案 1 :(得分:0)
查询似乎工作正常。我认为问题出在 CLIENT_NAME列的属性,请检查是否 该列,因为有些属性不允许null 查询中的值
select POLICY_REFER,
END_REFER,
CLIENT_NAME,
POLICY_PRODUCT,
ISSUE_DATE,
GROSS,
DOC_TYPE,
DOC_STATUS
from POLICY_MASTER
where (ISSUE_DATE BETWEEN :DFrom AND :DTo)
and (CLIENT_NAME = :Client or CLIENT_NAME is null)
and (POLICY_PRODUCT = :Product or POLICY_PRODUCT is null)
and DOC_STATUS = 'Parked'"