Sql server 基于条件检查为单个Jasper报表编写多个查询

Sql server 基于条件检查为单个Jasper报表编写多个查询,sql-server,jasper-reports,Sql Server,Jasper Reports,我试图生成一个Jasper报告,因为我需要根据开始日期和结束日期参数编写查询。这里的开始日期和结束日期可能是空值,因此根据开始日期和结束日期,我的查询应该会更改 到目前为止,我已经为条件1获取了4个参数,如id、from、to、condition1、condition2 我定义了一个表达式,如 $P{from} != null ? "and date >= $P{from}:"" condition2 expression $P{to} != null ? "and date <

我试图生成一个Jasper报告,因为我需要根据开始日期和结束日期参数编写查询。这里的开始日期和结束日期可能是空值,因此根据开始日期和结束日期,我的查询应该会更改

到目前为止,我已经为条件1获取了4个参数,如
id、from、to、condition1、condition2

我定义了一个表达式,如

$P{from} != null ? "and date >= $P{from}:""  
condition2 expression $P{to} != null ? "and date < $P{to}:""
此查询提供所有记录,即使我提供了日期限制。我用我的数据库进行了检查,结果是错误的。

“和日期>=$p{from}:”不正确(请勾选引号)

表达式“and date>=”+$p{from}:”的结果字符串没有意义

此解决方案适用于Oracle数据库。 用于将字符串转换为日期的表达式,例如:转换为日期('10.04.2008 10:00','DD.MM.YYYY HH:mi')


参数$p{condition1}必须在$p{from}之后声明。在这种情况下,参数的顺序很重要(按第一个参数的值计算第二个参数)

HTH

“和日期>=$p{from}:”不正确(勾选引号)

表达式“and date>=”+$p{from}:”的结果字符串没有意义

此解决方案适用于Oracle数据库。 用于将字符串转换为日期的表达式,例如:转换为日期('10.04.2008 10:00','DD.MM.YYYY HH:mi')


参数$p{condition1}必须在$p{from}之后声明。在这种情况下,参数的顺序很重要(按第一个参数的值计算第二个参数)

select name from app_info where id=$P{id} $P!{condition1} $P!{condition2}
<parameter name="from" class="java.util.Date"/>
<parameter name="to" class="java.util.Date"/>
<parameter name="condition1" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA[$P{from} != null ? "and myDateField >to_date('"+new java.text.SimpleDateFormat("dd.MM.yyyy HH:mm").format($P{from})+"','DD.MM.YYYY HH:mi')":""]]></defaultValueExpression>
</parameter>
<parameter name="condition2" class="java.lang.String" isForPrompting="false">
    <defaultValueExpression><![CDATA[$P{to} != null ? "and myDateField <=to_date('"+new  java.text.SimpleDateFormat("dd.MM.yyyy HH:mm").format($P{to})+"','DD.MM.YYYY HH:mi')":""]]></defaultValueExpression>
</parameter>