Jasper reports Jasper iReport复杂交叉表列和行

Jasper reports Jasper iReport复杂交叉表列和行,jasper-reports,ireport,crosstab,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

我想用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-----------------------
SELECT Date FROM Table WHERE Date BETWEEN $P{FromDate} AND $P{ToDate}
SELECT columnName FROM Table WHERE Date = $P{PDate}
这是非常复杂的,在我自己的逻辑思维中,我觉得它就像子报表中的交叉表?而且交叉表不允许添加单个列或行,只允许添加行组,所以这有点困难

现在我只能创建一个带有事务的交叉表,蓝色、红色和Total列, 以及所有银行电汇和信贷总额和所有交易总额

不过,我还是不能做Num列

此外,我只能对整个日期范围(1月1日至2日)进行交叉表计数,而不是对每个日期进行交叉表计数。。所以,我仍然无法根据每个日期计算银行电汇和信用总额


Jasper iReport论坛似乎也不活跃

“Num”列可以通过添加行组和计数变量作为其表达式来创建。另外,为了进行正确的计数,请创建一个“日期”组,并将交叉表放在该组的页脚中。

我正在使用SQL。我通过将交叉表放在细节栏中解决了日期问题,并为该交叉表使用了一个子数据集

-我的主数据集有参数FromDate和ToDate,其查询如下

**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-----------------------
SELECT Date FROM Table WHERE Date BETWEEN $P{FromDate} AND $P{ToDate}
SELECT columnName FROM Table WHERE Date = $P{PDate}
所以现在我的主数据集有字段Date

-然后我用参数PDate创建了新的子数据集,它的查询有点像这样

**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-----------------------
SELECT Date FROM Table WHERE Date BETWEEN $P{FromDate} AND $P{ToDate}
SELECT columnName FROM Table WHERE Date = $P{PDate}
-然后在交叉表数据的参数中,我从主数据集中添加带有表达式
F{Date}
的参数
PDate
,以便将它们链接在一起


希望这对任何人都有帮助。

我认为您可能需要将问题分成几个部分,以获得一个好的答案。“Num column”问题与将多个交叉表放到一个复杂的报告中没有密切关系。关于iReport论坛不活跃的评论对我来说似乎很奇怪。每天都有很多问题和答案发布。(这与StackOverflow的总容量完全不同……但它是稳定的。)为什么您认为Num列与交叉表不密切相关?这两个问题都与交叉表相关。我的意思是这两个问题之间没有密切的联系。