Jasper reports Jasper报告删除/隐藏空组

Jasper reports Jasper报告删除/隐藏空组,jasper-reports,crosstab,Jasper Reports,Crosstab,背景:Jaspersoft studio 6 有以下交叉表: select 'prod1' as prod, 'mon1' as month, 1 as val union all select 'prod1' as prod, 'mon2' as month, 1 as val union all select 'prod2' as prod, 'mon1' as month, 1 as val union all select 'prod2' as prod,

背景:Jaspersoft studio 6

有以下交叉表:

    select 'prod1' as prod, 'mon1' as month, 1 as val
    union all select 'prod1' as prod, 'mon2' as month, 1 as val
    union all select 'prod2' as prod, 'mon1' as month, 1 as val
    union all select 'prod2' as prod, 'mon2' as month, 1 as val
    union all select 'prod3' as prod, null as month, null as val

交叉表的数据集:

    select 'prod1' as prod, 'mon1' as month, 1 as val
    union all select 'prod1' as prod, 'mon2' as month, 1 as val
    union all select 'prod2' as prod, 'mon1' as month, 1 as val
    union all select 'prod2' as prod, 'mon2' as month, 1 as val
    union all select 'prod3' as prod, null as month, null as val
问题:正如您可能已经注意到的,prod3没有与mon1或mon2相关的数据。但我仍然需要它在报告中显示出来。因此,Jasper创建了空列。如何删除空列?我尝试过空时为空或删除行时为空在不同的地方,但没有任何工作。即使在某个时候,我也可以去掉空文本,但是单元格仍然被渲染,所以边框和背景颜色仍然显示出来

以及源文件(只是一个包含一个行组和一个列组的交叉表):


好的,问题解决了。与Jasper无关(这是一个很好的工具,但老实说,它只是缺少一些功能)。解决方案就是给prod3一个列组和0值。关键是任何组字段都没有空值,因此Jasper无法生成空组。对于这种情况,只需给出任何现有组成员(mon1或mon2)的prod3值和0值。对于一个真实的例子,必须有一些sql混乱来实现这一点,但这比用jasper进行黑客攻击要容易得多

    select 'prod1' as prod, 'mon1' as month, 1 as val
        union all select 'prod1' as prod, 'mon2' as month, 1 as val
        union all select 'prod2' as prod, 'mon1' as month, 1 as val
        union all select 'prod2' as prod, 'mon2' as month, 1 as val
        union all select 'prod3' as prod, 'mon1' as month, 0 as val

在sql或java级别进行过滤怎么样?你的意思是什么?我不想过滤掉prod3,我希望它出现在报告中,只显示mon1和mon2的0。