可重复分组报表

可重复分组报表也在报表开发中比较常见和麻烦的任务。可重复分组报表是指同一记录出现在不同的分组中被重复统计,常见的可重复分组报表有两类:一类是分组区间有交集,如:统计年龄段在20-30岁、25-35岁、30-40岁之间的用户数量;另外一类是分组区间有包含关系,如:统计各地区以及该地区主要城市的汇总数据,“华北,其中北京;华东,其中上海……”。

这类报表通过报表工具往往不易实现,即使实现也经常会伴随着报表难于开发维护、性能不高等问题。

通过集算器可以很好解决这个问题,这里通过两个例子来说明实现过程。

例一

根据员工基本信息表按年龄统计各年龄段区间的人数、奖金等汇总情况。报表样式如下:

这里“30-40岁”和“35-45”岁两个区间是有重复的。

集算器代码

A1建立数据源连接,A2查询员工表数据,由于该表只有出生日期,故在A3中增加并计算年龄字段;A4、A5指定年龄段区间及其区间名称,在A6中进行可重复枚举分组,并在A7中计算分组汇总值,最后A8将结果集返回给报表。

报表调用

由于集算器的主要工作是为报表做数据源准备,它只做数据计算,报表展现的工作仍由报表工具完成,这里选用润乾报表进行展现。

数据集设置

选用存储过程数据集,采用类存储过程的调用方式,其中“年龄段”为集算器脚本(dfx)名称。

报表模板

 

   说到润乾报表,作为一款优良的报表工具,这个例子润乾报表可以通过ds.enumGroup()函数实现:

ds1.enumGroup(true,age(BIRTHDAY)>20&&age(BIRTHDAY)<=30,"20岁到30岁",age(BIRTHDAY)>30&&age(BIRTHDAY)<=40,"30岁到40岁",age(BIRTHDAY)>=35&&age(BIRTHDAY)<45,"35岁到45岁",age(BIRTHDAY)>=45,"45岁以上")

这是四个分组的情况,可以想象一下如果有几十个分组这个表达式将异常冗长,很难维护,而在集算器中则非常清晰。

例二

根据订单表统计各省份订单情况,要求列出某些主要城市(如青岛、深圳、石家庄)的订单情况,报表样式如下:

集算器代码

A1、A2:建立数据库连接从订单表读取数据;

A3:列出主要城市与省份的对应列表;

A7:按照省份分组汇总;

A8、A9:按指定城市对位分组后汇总;

A10:将城市数据插入A7按省汇总的结果中。

报表调用

报表调用方式与上例相同,报表模板及其表达式如下:

通过润乾报表单独实现一般可以通过两种方法:

1、依靠大量隐藏行

即先按省份分组,在下一行再按城市分组并设置其跟随上一行扩展,设置城市所在行隐藏行表达式,将不需要显示的城市全部隐藏。

这种方法虽然可以实现,但大量的隐藏行极大地影响了报表效率,当城市分组很多的情况尤其明显。

2、通过overlap()函数

润乾报表中ds.overlap()可以用于完成可重复分组报表,本例表达式可以写成:

ds1.overlap(true,省份=="上海","上海",省份=="北京","北京",省份=="四川","四川",省份=="天津","天津",省份=="山东","山东",城市=="青岛","    其中:青岛",省份=="广东","广东",城市=="深圳","    其中:深圳",省份=="江苏","江苏",省份=="江西","江西",省份=="河北","河北",城市=="石家庄","    其中:石家庄",省份=="海南","海南",省份=="福建","福建",省份=="辽宁","辽宁",省份=="重庆","重庆",省份=="陕西","陕西")

通过overlap实现有两个明显缺点,第一是表达式长度,长到让人无法忍受的程度,可读性差难于更改,而且类似的表达式被写许多遍,自动报表的优势荡然无存;第二是由于统计省份都在表达式里写死了,这样报表过于固定无法随原始数据变化而变化,发生数据变化时还需要修改报表模板,造成维护困难。

集算器完成这类报表时即没有隐藏行列影响效率的担忧,又不会因为表达式长度和报表固定使报表使用受限,集算器作为集合运算的利器具有丰富的类库,代码结构清晰,可以帮助用户快速完成此类特殊格式报表的制作,是报表制作中不可或缺的好帮手。

可重复分组报表

时间: 2024-10-03 05:39:52

可重复分组报表的相关文章

润乾报表实现可重复分组报表及改进

可重复分组报表是报表开发中比较常见和麻烦的任务.可重复分组报表是指同一记录出现在不同的分组中被重复统计,常见的可重复分组报表有两类:一类是分组区间有交集,如:统计年龄段在20-30岁.25-35岁.30-40岁之间的用户数量:另外一类是分组区间有包含关系,如:统计各地区以及该地区主要城市的汇总数据,"华北,其中北京:华东,其中上海--". 下面通过两个实例来看一下润乾报表的实现过程. 实例一 根据员工基本信息表按年龄统计各年龄段区间的人数.奖金等汇总情况.报表样式如下: 这里"

非常规统计报表之制作按段分组报表的新办法

报表开发中,经常会碰到一些需要进行非常规统计的报表,固定分组.可重复分组.组内排序,还包括跨行组计算的报表,甚至有些报表本身无数据来源.以及需要对数据源再计算.这些报表本身具备一定的特殊性,使用常规方法往往难于实现. 对于按段分组报表,各段之间可以有重复,也就可能出现按段可重复的分组报表.集算报表在完成这类特殊统计报表时比较简单,这里通过一个实例说明实现过程. 报表说明 根据员工基本信息表按年龄统计各年龄段区间的人数.奖金等汇总情况.报表样式如下: 这里"30-40岁"和"3

使用多级分组报表展现分类数据

当你走进便利店,你会发现所有的商品都是按类排放的,分类排放可以帮助您快速找到同类商品,也可以快速发现你想要的商品. 当去饭店吃饭的时候,菜单上的菜也是按类别排列的,比如凉菜,热菜,汤类,主食等.点菜时你会直接翻到你想要的那一类菜单,点菜. -- 通过上面场景,大家就理解分组呈现数据的好处了,分组可以帮助快速定位,方便数据查找,汇总,分析数据趋势等.有时候分析某一单一的商品并无价值,所以采用分组是最常见也是最简单的数据分析手段. 分组报表则是在报表中使用分组功能,是工作中最常用的报表类型,分组功能

sql的基础语句-单行函数,dual,数字函数,日期函数,表连接,集合运算,分组报表,单行子查询,多行子查询

3. 单行函数 3.1 转换函数 select ascii('A'),chr(65) from dual; select to_char(1243123),1231451 from dual;靠左边的就是字符串,靠右边的就是数字 select to_char(123512a121) from dual;   --错误的写法,没有引号表示数字,但是数字里面包含了字母,不合法的输入值 select to_number('123141211') from dual; select to_number(

ActiveReports 报表应用教程 (6)---分组报表

原文:ActiveReports 报表应用教程 (6)---分组报表 在 ActiveReports 中可以设置单级分组.嵌套分组,同时,还可以使用表格.列表以及矩阵等数据区域控件对数据源进行分组操作.分组报表在商业报表系统中应用不胜枚举,客户信息归类统计表.商品分类统计表.销售记录年度.阅读统计等等.本文将介绍如何在 ActiveReports 中实现分组报表. 1.创建报表文件 在应用程序中添加一个 ActiveReports 报表文件,使用的项目模板类型为 ActiveReports 页面

润乾报表实现预置分组报表及改进

预置分组报表在报表开发中比较常见而且比较棘手.所谓预置分组报表是指分组没有规律,可能是分组范围没有规律,也可能分组顺序没有规律,需要报表开发人员事先预置(固定)分组的报表.常见的预置分组报表一般有如下三类:按段分组报表.固定次序分组报表.多层固定次序分组报表.下面分别看一下这几类报表的特点,以及润乾报表的实现方法. 按段分组报表 这类报表的特点是分段的区间并未在数据库中存储需要根据相应字段(如年龄.日期)计算,并且每个分段可能会发生变化(如每年节假日所在日期可能不同),经常由用户随意指定.如:统

如何制作动态层分组报表

润乾报表提供了单元格同值合并的功能,可以实现动态层次的分组报表.这里通过一个例子来说明使用过程. 目标报表: 需要根据参数动态传递分组字段,按不同维度汇总订单运货费.如参数输入“货主地区, 货主城市”,显示的报表效果如下: 当参数输入“货主地区, 运货商, 货主城市”时,报表显示如下: 以下为具体实现步骤: 1.连接数据源 连接润乾报表设计器自带 DEMO 数据源: 2.设置报表参数 新建报表,并设置报表参数如下: 其中,gnum 为分组字段数:gname 为分组字段名,多个字段使用逗号分隔 3

按段分组报表制作

需求说明 在报表对数据进行汇总统计时,通常是按照某个字段进行分组,比如按地区.类别等字段分组后对其他信息进行汇总,但有一种分组模式为不规则分组,其分组是根据数据的值段来分的,例如按照分数段.年龄段.按时间段等,属于某个值区间的记录归到一个组里如下图所示: 在上图中我们可以看到,报表根据订购日期将订单数量和订单金额分成四组,分别统计 "2012 年圣诞前".“2012 年圣诞–2013 年国庆”.“2013 年国庆–2014 年五一”."2014 年五一以后" 四个时

报表设计--分组报表-分组小计

一.新建数据源 参照网格式报表设计 二.操作步骤 在A2单元格中填写=ds.group(TYear),设置为纵向扩展,表示按年度分组 在A3单元格中填写=ds.group(TJd),设置为纵向扩展,表示按季度分组 在A5单元格中填写=ds.group(TMonth),设置为纵向扩展,表示按月度分组 在B3单元格中填写=ds.sum(Tmoney) 在B4单元格中填写=ds.sum(Tmoney) 三.报表计算预览效果图