Jasper reports 如何使用单个查询结果数据创建多个图表

Jasper reports 如何使用单个查询结果数据创建多个图表,jasper-reports,Jasper Reports,我有一个查询,返回给我40行,每行有错误数和关闭日期。关闭日期值 从五月到六月 现在我必须在JasperReports中创建3个报告图表 显示每天关闭的bug数量的图表 显示每周关闭的bug数量的图表 显示每月关闭的bug数量的图表 我们可以使用单个查询结果数据创建这3个图表,还是创建3个不同的查询 在jasper中是否可以使用脚本或其他方式执行此操作?我希望您可以在查询中使用某种日期检查。 差不多 5月和6月之间的哪一天 而是创建两个参数,例如$p{TimeCheck}和$p{TimeRang

我有一个查询,返回给我40行,每行有错误数和关闭日期。关闭日期值 从五月到六月

现在我必须在JasperReports中创建3个报告图表

  • 显示每天关闭的bug数量的图表
  • 显示每周关闭的bug数量的图表
  • 显示每月关闭的bug数量的图表
  • 我们可以使用单个查询结果数据创建这3个图表,还是创建3个不同的查询


    在jasper中是否可以使用脚本或其他方式执行此操作?

    我希望您可以在查询中使用某种日期检查。 差不多

    5月和6月之间的哪一天

    而是创建两个参数,例如
    $p{TimeCheck}
    $p{TimeRange}

    其中,$p{TimeCheck}参数将用于时间比较查询,参数$p{TimeRange}将用于导出参数$p{TimeCheck}的值。映射参数时,为不同的图表传递不同的$P{TimeRange}值,例如,对于图表$P{TimeRange}='month',对于图表,$P{TimeRange}='week',对于每天图表,$P{TimeRange}='all'

    参数$p{TimeCheck}应具有以下表达式
    “$p{TimeRange}=='week'?'中的日期(每周的开始日期或结束日期):$p{TimeRange}=='month'?'中的日期(每月的开始日期或结束日期):'date betweek'”
    >

    现在,在where条件中使用此参数作为where$p!{TimeCheck}

    注意:不要使用主查询。尝试创建数据集并使用查询。


    我希望这能解决您的问题。

    它会更好地为每个图表使用不同的数据集。或者您可以使用相同的数据集,但这将很难开发。您可以使用以下步骤尝试此操作:

    您需要在sql查询中添加列(比如周数),并计算该列日期的周数。例如,选择周(yourdate)给你周数

    现在,数据集中有三列包含周数

    如果你在Jasper图表中使用week_编号作为类别,它会给出图表,但其值不匹配

    原因:jasper为列编号添加了值,但也按周编号进行了划分。 示例:第一周有两行。然后它将计算它并将其除以2

    这意味着您需要另一列(如week_number of_bugs_closed),它是week_number和number of_bugs_closed的倍数

    要计算周数,您需要进行一个联接,该联接将为您提供该特定周的总天数

    您可以参考下面显示查询结构的查询

    select a.*,b.week_count, week_number_of_bugs_closed * b.week_count as week_value from
    (select xyz.number_of_bugs_closed , xyz.closed_date ,week(closed_date)         as week_number from xyz) a
    join 
    (select week(closed_date) week_number, count(*) as week_count from xyz group by week(closed_date) ) b  on 
         a.week_number = b.week_number
    
    现在,您可以将类别week_编号及其值作为week_值用于周线图

    您可以对月表使用类似的方法

    我希望,我能够解释这些概念