CharlieShen

新人,大家多关照啦@_@

  博客中心 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 登录 ::
  3994 随笔 :: 0 文章 :: 20 评论 :: 0 Trackbacks
Cached @ 2025/4/27 2:49:38Control ASP.skins_cogitation_controls_blogstats_ascx
<2007年9月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

留言簿(14)

随笔档案

文章档案

搜索

最新评论

阅读排行榜

评论排行榜

Cached @ 2025/4/27 2:49:38Control ASP.skins_cogitation_controls_singlecolumn_ascx

实现交叉报表

较为复杂的报表需求是交叉报表和子报表。

交叉报表是国内数据统计报表最常使用的形式之一。通常用于将在数据库中记录的数据字段按不同分类水平汇总显示。有两种实现方式:1.用交叉查询形成交叉结果集,最终用简单报表实现;2.使用iReport的交叉报表直接实现。

并非所有数据库都支持交叉查询,Oracle10g中通过sum和decode函数可以实现交叉查询,汇总使用函数sum(decode(key,KEY1,value,0)) as Field1、sum(decode(key,KEY2,value,0)) as Field2,等等,将具有(…key,value…)形式的简单结果集汇总为有(…Feild1,Field2,…),其中Field1是按key值为KEY1汇总值, Field2按key值为KEY2汇总值,依次类推。iReport可将该交叉结果集当做普通结果集处理形成交叉报表形式。

使用iReport的交叉报表工具,可以制作更为丰富的交叉报表,过程较复杂。要点是,在主报表的Detail栏目插入crosstable,需要编辑交叉报表属性决定交叉报表内容,交叉报表设计决定报表的外观。

在主报表中定义SQL查询语句,将结果集传递给交叉报表。这样就只需要进行一次数据库查询操作,不过也只能支持一个交叉报表,且不能自动绘图,因为交叉报表会将结果集的游标指向尾部,这样可满足单一交叉报表需要。为实现上述要求,在交叉报表属性中点选“use a dataset to fill the crosstable”,选择并命名一个subdataset,并且在连接数据源表达式中输入系统参数“$P{REPORT_DATA_SOURCE}”。定义行列分组和Measure。Measure就是交叉报表需要进行汇总的目标字段。行列分组写入分组需要依据的字段,类似交叉查询汇总的key字段,可支持嵌套多重分组,适用多级树型管理分别需要统计的情况。属性设置完毕,就可以使用报表设计,可视化进行报表外观设计,每个字段或汇总字段的长度、颜色、线条等,可以做出相当专业的交叉报表。

分享按钮发布于: 2007-09-20 12:38 CharlieShen 阅读(421) 评论(0)  编辑 收藏