我想用Jasper iReport创建一个交叉表报告,该报告具有这样的布局
**Date: 1 January 2012**
Num Transaction Blue Red Total
1 | Bank Wire | 2 | 5 | 7
2 | Credit Card | 1 | 2 | 3
3 | Cheque | 1 | 1 | 2
------------------------------------------------
Total
Bank Wire & Credit | 3 | 7 | 10
------------------------------------------------
Total All | 4 | 8 | 12
**Date: 2 January 2012**
Num Transaction Blue Red Total
1 | Bank Wire | 0 | 1 | 1
2 | Credit Card | 2 | 2 | 4
3 | Cheque | 1 | 1 | 2
------------------------------------------------
Total
Bank Wire & Credit | 2 | 3 | 5
------------------------------------------------
Total All | 3 | 4 | 7
--------------------------xx-----------------------
--------------------------xx-----------------------
Total
All Bank Wire
& Credit | 5 | 10 | 15
----------------------------------------------------
Total
All Transaction | 7 | 12 | 19
--------------------------xx-----------------------
--------------------------xx-----------------------
这是非常复杂的,在我自己的逻辑思维中,我觉得它是子报告中的交叉表?并且Crosstab也不允许添加单列或行,只允许添加行组,因此有点困难。
现在我只能创建一个包含Transaction,Blue,Red和Total列的交叉表, 和全部银行电汇&信用和全部交易总额
但是,我仍然不能做Num专栏!另外,我只能在整个日期范围(1月1日至2日)而不是每个日期进行交叉表计数。所以我仍然不能做Total Bank Wire&根据每个日期的信用和总计
Jasper iReport论坛似乎也没有活跃..
答案 0 :(得分:1)
我正在使用SQL。我通过将交叉表放在细节带中解决了日期问题,并使用子数据集作为交叉表。
- 我的主数据集有参数FromDate和ToDate,它的查询看起来像这样
SELECT Date FROM Table WHERE Date BETWEEN $P{FromDate} AND $P{ToDate}
所以现在我的主数据集有字段日期
- 然后我用参数PDate创建了新的子数据集,其查询类似于
SELECT columnName FROM Table WHERE Date = $P{PDate}
- 然后在“交叉表数据”的“参数”中,我在主数据集中添加带有表达式PDate
的参数F{Date}
,以便将它们链接在一起。
希望这有助于任何人。
答案 1 :(得分:0)
'Num'列可以通过添加行组和count变量作为其表达式来创建。此外,为了进行正确的计数,请创建一个“日期”组并将交叉表放在该组的页脚中。