2015-12-23 58 views
0

我创建了一个sql查询,我有3个字段 - > NUMBER,COMPANY_NAME,END_DATE。 我想要做的是给用户选择是否输入NUMBER和COMPANY ...但END_DATE必须是强制性的。但是,当我将NUMBER和COMPANY都留空,并且只输入END_DATE时,我没有收到任何记录。任何帮助?sql查询返回特定记录的条件

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

那么一开始就没有SELECT子句:/如果你想要一个准确的答案,你应该包括所有的信息 – Anton

+0

@Anton像SELECT子句会影响查询。 .. – mikeb

+0

我发现SELECT子句在编写查询 – Anton

回答

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

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}