Jasper Studio:聚合 JDBC 域数据

Jasper Studio: Aggregating JDBC Domain data

我的问题与post中的问题有关,但我改变了方法。

我需要创建一个基本差异报告,显示两个日期的交易量以及这些交易量之间的差异。

我有一个 SQL 查询,它使用子查询为我的数据提供适当的聚合。

我的问题是我必须使用 JDBC 域数据源并且无法在 Studio 中正确聚合结果。

我的域数据集如下所示:

ID Date        Volume
1  2015-10-05  100
1  2015-10-06  200
2  2015-10-05  800
2  2015-10-06  700

想要的结果 Table 按 VolDiff 排序

ID VolDate1  VolDate2  VolDiff  
2  800       700      -100      
1  100       200       100

我在 Studio 中尝试了几种方法:

    ID VolDate1  VolDate2  VolDiff
    2  800         0      -800
    2    0       700       700
    1  100         0      -100
    1    0       200       200
instead of:
    ID VolDate1  VolDate2  VolDiff
    2  800       700      -100
    1  100       200       100

我使用计算变量获取交叉表的步骤:

正在配置 crosstab:

  • 将我的日期作为列(ID 为行,卷​​为 测量)
  • 在交叉表中,将我的度量的计算函数更改为 "Sum"

计算体积差异并添加到交叉表:

  • 在主数据集中创建 2 个变量来给出每天的交易量:

    Vol_Date1: IF($F{dateSet.RecordDate}.equals($P{RecordDate_0_1}), $F{productionSet.OilProduction},0.0)
    
  • 在计算差异的主数据集中创建第三个变量:

    Vol_Diff: $V{Vol_Date2}-$V{Vol_Date1}
    
  • 变量属性:要正确获取差异变量:

    Vol_Date1:              Calculation = First, Increment Type = None, Reset Type = [Group] ID
    Vol_Date2 and Vol_Diff: Calculation = None, Increment Type = None, Reset Type = Report
    
  • 在值表达式为 $V{Vol_Diff} 的交叉表中创建度量;计算=无计算功能