我正在尝试在BIRT报告中创建一个包含两个组的表。
我首先按年份分组,然后按第二列中的标准分组。假设这个标准是[A,B,C,D]之一。如果不存在一年的标准,则BIRT中的默认值为空白。例如,如果2011年没有任何B或D标准,我的报告将如下所示:
2010
----
A 1
B 2
C 3
D 4
2011
----
A 5
C 6
但是,我希望所有可能的标准都显示出来,即使它们没有特定年份的任何条目。
我尝试将该属性设置为advanced-> section-> show if blank = true,但是没有做任何事情。
有什么想法吗?
(我正在使用birt 2.6.0)
SQL查询(连接到mysql数据源)非常简单:
SELECT year_field, decision_field, sales_field
FROM databaseName
该报告为 http://bit.ly/9SDbNI
并生成如下报告:
答案 0 :(得分:2)
正如我之前评论的那样,这是一个数据集问题,而不是BIRT问题。问题是数据集不包括那些年份没有销售这些决策代码的行。
我非常希望多年来会有单独的表格和决策代码,但看起来好像有一张表可以存放一切。因此,我建议以下查询(基于rptdesign文件中的查询,而不是问题):
select y.year_field, d.decision_field, t.sales_field
from
(select distinct year_field from databaseTable) y
cross join (select distinct decision_field from databaseTable) d
left join databaseTable t
on y.year_field = t.year_field and d.decision_field = t.decision_field
此外,将Count列的定义更改为sales字段的计数,而不是决策字段。
答案 1 :(得分:0)
我注意到你正在使用MySql。使用SELECT IFNULL(<MyCol>,0) from my_table;
将空值替换为0。