我正在创建一个sql查询,其中我有3个字段 - > NUMBER,COMPANY_NAME日期,结束日期。 我想要做的是给用户选择是否输入NUMBER和COMPANY ...但END_DATE必须是强制性的。但是,当我将NUMBER和COMPANY都留空,并且只输入END_DATE时,我没有收到任何记录。有什么帮助吗?
where L.NUMBER = $P{LEASE_NUMBER}
OR L.COMPANY_NAME = $P{COMPANY_NAME}
AND (L.END_DATE BETWEEN $P{DateFrom} AND $P{DateTo}
OR $X{EQUAL, L.END_DATE, dateRange})
答案 0 :(得分:2)
我认为这更接近你正在寻找的逻辑:
where (L.NUMBER = $P{LEASE_NUMBER} OR $P{LEASE_NUMBER} IS NULL) and
(L.COMPANY_NAME = $P{COMPANY_NAME} OR $P{COMPANY_NAME} IS NULL) and
(L.END_DATE BETWEEN $P{DateFrom} AND $P{DateTo} OR
$X{EQUAL, L.END_DATE, dateRange}
)
我对时间表达不确定。您的问题没有解释DateFrom
。
答案 1 :(得分:0)
这可能有用
WHERE (L.NUMBER = $P{LEASE_NUMBER} OR $P{LEASE_NUMBER} = '')
AND (L.COMPANY_NAME = $P{COMPANY_NAME} OR $P{COMPANY_NAME} = '')
AND L.END_DATE >= $P{DateFrom} AND L.END_DATE <= $P{DateTo}