`
datamachine
  • 浏览: 164079 次
社区版块
存档分类
最新评论

不规则跨行计算报表

阅读更多

   使用Jasper或BIRT等报表工具时,常会碰到一些非常规的统计,用报表工具本身或SQL都难以处理,比如源数据中有条特殊数据,其他数据都要和它进行占比、求和等计算。集算器具有结构化强计算引擎,集成简单,可以协助报表工具方便地实现此类需求。下面通过一个例子来说明不规则跨行计算报表的实现过程。

  数据库表majorSum存储着某医院重点科室以及全院的患者统计,报表需要按字母顺序呈现各科室的患者占比,并在最后保留全院患者数量。源数据如下:



 

   期望的报表如下:

department

patient

Accident and emergency (A&E)

7.03%

Anaesthetics

12.37%

Breast screening

12.37%

Discharge lounge

14.61%

Ear nose and throat

15.06%

Haematology

17.43%

Neurology

5.23%

Cardinal Community Hospital

44562

 

   集算器可以准备出报表需要的数据,代码如下:



 

   A1=myDB1.query(“select department,patient from majorSum order by department”)

  执行SQL,在数据源myDB1中检索majorSum表,结果如下:



 

   A2=A1.maxp(patient)

  取出全院患者所在的记录,函数maxp可以取出字段值最大的记录,即Cardinal Community Hospital。

  A3=A1\A2

  从完整记录A1中去除全院记录A2,运算符“\”可求出集合间的差集。

  A4=A3.run(string(patient/A2.patient,”#.##%”):patient)

  计算各科室患者的占比。函数run可对A3进行循环计算,函数string可将数字格式化为字符串。结果如下:



 

   A5=A4|A2

  将全院记录和占比数据合并。运算符“|”相当于函数union。集算器支持泛型二维表,因此字符串和数字可以存储在同一个字段。A5的计算结果就是报表需要的数据,如下:



 

   A6:result A5

  将A5返回给报表工具。集算器对外提供JDBC接口,报表工具会将集算器识别为普通数据库,集成方案请参考相关文档。

  上述代码是分步计算,便于观察中间结果,熟练后可以简化为下面两句代码:
    A1=myDB1.query(“select department,patient from majorSum order by department”);
    A2:result(total=A1.maxp(patient),(A1\total).run(string(patient/total.patient,”#.##%”):patient)|total)

  接下来以BIRT为例设计一张简单的list表,模板如下:



 

   预览后可以看到报表结果:



 

   报表调用集算器的方法和调用存储过程一样,比如将本脚本保存为irregulProportion.dfx,则在BIRT的存储过程设计器中可以用call irregulProportion()来调用。同样地,集算器也支持报表参数。

  • 大小: 25.8 KB
  • 大小: 34.6 KB
  • 大小: 31.4 KB
  • 大小: 25.7 KB
  • 大小: 32.9 KB
  • 大小: 29.8 KB
  • 大小: 26.6 KB
0
1
分享到:
评论

相关推荐

    报表汇总小工具

    此外,用户还能指定开始行,确保不包含标题行或其他非数据行,进一步提高了数据处理的准确性。 该工具还支持设置汇总的行数,这在处理大数据量时尤为关键。通过设定共多少行,用户可以避免因文件过大导致的计算延迟...

    报表软件--Style Report报表数据填报

    - **离线填报样例**:展示了一个典型的离线填报报表,其中包含了多个数据字段和审核审批功能,支持用户自行增加和删除行。 #### 结语 Style Report报表软件以其敏捷、灵活和强大的特性,成为了企业级报表和数据...

    润乾报表资料

    - 数据源是报表数据的来源,包括但不限于数据库连接、文件等。 #### 四、数据集定义 - **说明**:介绍数据集的基本概念。 - **数据集的类型**:数据集可以有不同的类型,如常规SQL等。 - **缓存**:解释数据集结果...

    Oracle中使用SQL MODEL定义行间计算.pdf

    在Oracle数据库10g中,`MODEL`子句提供了一种强大而灵活的方法来执行行间计算,它允许用户根据查询结果定义多维数组,并将规则应用于这些数组以计算新值。与传统方法(如在应用程序或PC电子表格中进行计算)相比,...

    帆软FCRA题库.docx

    在单选题部分,涉及的知识点包括报表制作流程、开发语言选择、服务器部署环境、单元格对齐方式、参数命名规则、单元格标识、单元格合并、部署目录结构、库文件位置、数据库文件位置、撤销次数限制、移动端预览参数、...

    电子报表软件ppt课件.ppt

    8. **三维度公式**:在涉及多工作表甚至多工作簿的数据操作时,可以通过指定工作表名称和单元格引用进行跨工作表或跨工作簿的公式计算。 9. **打印工作表**:Excel提供打印设置功能,包括设置页面大小、页边距、...

    小企业记账用Excel编制记账凭证录入数据自动生成会计报表.zip

    每行代表一笔交易,确保每笔收入和支出都有相应的凭证支持,保证账目的准确性。 2. 数据录入:Excel的表格结构使数据录入变得简单直观。可以设定单元格格式,例如数字格式、货币格式,以确保数据的一致性和准确性。...

    2021-2022计算机二级等级考试试题及答案No.542.docx

    23. 数据库管理系统功能:数据库管理系统主要功能包括数据定义(DDL)、数据操作(DML)、数据查询和数据库维护,不包括数据计算。 24. Java接口实现:给定的代码实现了一个MouseListener接口,虽然它扩展了...

    Excel表格+Word文档各类各行业模板-采购报表.zip

    - **公式与函数**:Excel支持计算功能,如SUM、AVERAGE、MAX和MIN,方便计算总金额、平均单价、最大订单量等。 - **条件格式化**:通过对满足特定条件的单元格应用颜色或样式,可以突出显示关键数据,如超预算的...

    egFR_GroupReport_20200316.rar

    FastReport是一款跨平台的报表开发组件,支持多种编程语言,如Delphi、C++Builder、.NET等。它提供了丰富的报表设计功能,包括表格、图表、文本、图像等多种元素,同时支持自定义脚本,使得用户可以灵活地实现复杂的...

    FastReport4-中文使用手册

    - **多页报表**:讨论如何设计和处理跨多页的报表。 #### 第三章:分组集合体 - **3.1 分组打印**:阐述如何根据数据的不同属性对报表进行分组打印。 - **3.2 其他分组特性**:介绍除了基本的分组打印外,还有哪些...

    MAC在Numbers单元格里面显示公式.docx

    例如,在财务报表中,我们可以使用这个技巧来显示计算公式,而不是计算结果;在科学计算中,我们可以使用这个技巧来显示复杂的公式,而不是计算结果。这项技巧可以帮助我们更好地使用 Numbers,提高工作效率和计算...

    2021-2022计算机二级等级考试试题及答案No.10220.docx

    19. 标识符规则:标识符不能包含运算符,如'a*b'是非法的。 20. 软件卸载:卸载软件不应直接删除程序文件,应使用专门的卸载工具或控制面板功能。 21. 软件设计:过程设计描述了如何将系统结构部件转化为具体的...

    2021-2022计算机二级等级考试试题及答案No.1057.docx

    这些知识点涵盖了数据库查询语言(SQL)、报表设计、文件路径处理、Web开发...规则、数据库表结构理解、Java编程环境配置、HTML表单元素定义、计算机安全设置、Word文档编辑技巧、菜单交互逻辑、网络通信协议应用、文件...

    2021-2022计算机二级等级考试试题及答案No.19456.docx

    字节码文件具有良好的跨平台特性,使得Java程序能够“一次编写,到处运行”。 #### Java程序执行结果分析 - **知识点**: 给定的Java程序通过计算特定的数学表达式输出一个整数值。 - **解释**: 程序中使用了`Math....

    2021-2022计算机二级等级考试试题及答案No.19752.docx

    - **解释**:Java支持多线程、跨平台、动态性等特点,但不支持多继承(它通过接口来实现多重继承的效果)。 ### 标准模块的概念 - **知识点**:Visual Basic中的标准模块。 - **解释**:标准模块是在Visual Basic...

    2021-2022计算机二级等级考试试题及答案No.10250.docx

    21. **C++语句**:C++语句可以跨行书写,但每条简单语句必须以分号结束。 22. **二进制转换**:十进制数58转换为二进制是111010,是正确的。 23. **接口声明**:在C#或Java中,接口使用`public`修饰符,表示可以被...

    2016年天津银行招聘计算机学知识点:网络浏览器故障及解决办法考试题..pdf

    9. 银行卡跨行通用:中国银联负责提供银行卡跨行通用的金融服务,使得不同银行的银行卡可以在不同ATM机上使用。 10. 会计核算中的账务组织:明细核算、凭证传递、科目设置和记账规则都是会计核算中账务组织的组成...

    2021-2022计算机二级等级考试试题及答案No.16652.docx

    24. 数据处理的特点是处理大量数据但数值计算并不复杂,例如报表生成、数据分析等。 25. 如果容器组件p的布局是BorderLayout,在p的下边添加按钮b应使用p.add(b, "South")。 这些知识点涵盖了编程基础、数据库设计...

Global site tag (gtag.js) - Google Analytics