sql查询返回特定记录的条件

时间:2015-12-23 13:03:24

标签: sql jasper-reports

我正在创建一个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})

2 个答案:

答案 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}