首先我们要实现如下图的样子;
现在我们来制作,新建birt默认数据源我就不说了,下面是新建sql数据集,写sql如下:
select *
from CLASSICMODELS.PAYMENTS
然后设置计算列year:表达式为:var v = row["PAYMENTDATE"];
v = v.toString();
v = v.substring(0,4);
v;
如下图:
然后设置计算列month(此处根据月份计算季度):表达式为:var v = row["PAYMENTDATE"];
v = v.toString();
v = v.substring(0,4);
v;
如下图:
然后新建多维数据集,将CUSTOMERNUMBER,year,month拖到组里,生成组,注意:
month直接拖到year组里。
将amount拖到摘要里。
如下图:
在设计器里新建一个一行一列的网格(目的是固定交叉表),设置网格宽度800px,网络中单元格居中。
再新建交叉表,将相应的字段拖入相应位置,设置样式(这里我就不多说怎么设置样式了,不过有一点要注意,把数据填充和边距,单元格填充都设置为零),如下图:
再点击year旁边的小图标,选择总计,设置根据year总计,如下图:
ok,没什么多说的了,点击预览看看吧,是不是我的上面的效果一样。
现在我们来制作,新建birt默认数据源我就不说了,下面是新建sql数据集,写sql如下:
select *
from CLASSICMODELS.PAYMENTS
然后设置计算列year:表达式为:var v = row["PAYMENTDATE"];
v = v.toString();
v = v.substring(0,4);
v;
如下图:
然后设置计算列month(此处根据月份计算季度):表达式为:var v = row["PAYMENTDATE"];
v = v.toString();
v = v.substring(0,4);
v;
如下图:
然后新建多维数据集,将CUSTOMERNUMBER,year,month拖到组里,生成组,注意:
month直接拖到year组里。
将amount拖到摘要里。
如下图:
在设计器里新建一个一行一列的网格(目的是固定交叉表),设置网格宽度800px,网络中单元格居中。
再新建交叉表,将相应的字段拖入相应位置,设置样式(这里我就不多说怎么设置样式了,不过有一点要注意,把数据填充和边距,单元格填充都设置为零),如下图:
再点击year旁边的小图标,选择总计,设置根据year总计,如下图:
ok,没什么多说的了,点击预览看看吧,是不是我的上面的效果一样。
更多birt内容请访问我的个人论坛:birt.5d6d.com