Jasper iReport Complex Crosstab Column and Row

时间:2012-02-01 03:44:06

标签: jasper-reports ireport crosstab

我想用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论坛似乎也没有活跃..

2 个答案:

答案 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变量作为其表达式来创建。此外,为了进行正确的计数,请创建一个“日期”组并将交叉表放在该组的页脚中。