动态格间运算

编辑
  • 文档创建者:文档助手1
  • 浏览次数:40279次
  • 编辑次数:20次
  • 最近更新:Leo.Tsai 于 2019-11-06
  • 1. 描述

    在线视频学习请查看:层次坐标

    传统报表工具,一般只提供同行内的格间运算和针对某组(或全体)的集合运算,会有如下几种情况的不足:

    • 跨行运算,如:引用上一行数据,典型应用就是做累计比和环比。

    • 跨组运算,如:同期比等等,跨组则无能为力。 

    • 集合运算,只提供个别固定的函数,如:取第一名、算累计值等。

    • 无法组合出通用集合运算,如:取第二名、算累计的乘积等。

    • 某些带条件的运算,如:统计同组数据中比当前数大的个数,也就是数据排名等。

    FineReport 使用层次坐标表达扩展单元格的位置,很好地解决了以上动态格间运算的问题。

    下面通过示例介绍如何使用层次坐标书写计算表达式来进行动态格间运算。示例中涉及到的运算类型有:比较、占比、环比、逐层累计、跨层累计、条件汇总。

    2. 示例一

    2.1 示例效果

    比较:将单元格扩展出的每个值与第一个值进行比较,示例中是求差值。 

    占比:计算单元格扩展出的每个值在总量中占据的比例。 

    环比:计算每行数据与上一行数据的比率。

    Snag_51e609a.png

    2.2 数据准备

    新建数据集 ds1,数据库查询对话框中写入 SQL 查询语句:

    SELECT STRFTIME('%m',订购日期) AS 月份,应付金额 

    FROM 订单 

    WHERE STRFTIME('%Y',订购日期)='2011'

    Snag_5265df4.png

    2.3 报表设计

    按照表格中的说明设计报表。

    单元格操作
    A1~E1单元格依次写入字段标题名:月份,应付金额,比较,占比,环比。选中 A1~E1 单元格,设置标题预定义样式为Head类型
    A2数据集中的数据列「月份」拖入到单元格中
    B2数据集中的数据列「应付金额」拖入到单元格中,并在单元格元素>数据设置中对单元格数据进行汇总>求和
    C2写入公式B2 - B2[A2:1],计算 B2 单元格扩展出来的数据,每一行与第一行的差值
    D2写入公式B2 / SUM(B2[!0]),计算 B2 单元格扩展出来的数据,每一行在总值中的占比
    E2写入公式IF(&A2 > 1, B2 / B2[A2:-1], 0),计算 B2 单元格扩展出来的数据,每一行与上一行的比率

    报表最终效果如下图所示:

    Snag_52dd6fa.png

    3. 示例二

    3.1 示例效果

    逐层累计:分组报表中,每一组数据逐行累计。 

    跨层累计:分组报表中,所有数据逐行累计,跨组时接着上一组累计结果继续累计。

    条件汇总:对符合条件的数据进行汇总。

    Snag_522ca4d.png

    3.2 数据准备

    新建数据集 ds1,数据库查询对话框中写入 SQL 查询语句:

    SELECT STRFTIME('%Y',订购日期) AS 年份,STRFTIME('%m',订购日期) AS 月份,应付金额

    FROM 订单

    WHERE STRFTIME('%Y',订购日期) IN ('2010','2011')

    Snag_538fa6b.png

    3.3 报表设计

    按照表格中的说明设计报表。

    单元格操作
    A1~E1单元格依次写入字段标题名:年份,月份,应付金额,逐层累计,跨层累计。选中 A1~E1 单元格,设置标题预定义样式为Head类型
    A2数据集中的数据列「年份」拖入到单元格中
    B2数据集中的数据列「月份」拖入到单元格中
    C2数据集中的数据列「应付金额」拖入到单元格中,并在单元格元素>数据设置中对单元格数据进行汇总>求和
    D2写入公式C2 + D2[B2:-1],C2 单元格扩展出来的数据按年份逐行累计
    E2写入公式IF(&B2 > 1, C2 + E2[B2:-1], C2 + E2[A2:-1,B2:!-1]),C2 单元格扩展出来的数据逐行累计,跨年份时接着上一年份的累计结果继续累计
    A3~C3合并 A3~C3 单元格,写入字段标题名:应付金额大于2500的月份个数。设置左父格为 A2,标题预定义样式为Head类型
    D3~E3合并 D3~E3 单元格,写入公式COUNT(C2[!0]{A2=$A2 && C2>2500}),统计应付金额大于2500的月份个数

    报表最终效果如下图所示:

    Snag_53b2b26.png

    4. 已完成模板

    已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\demo\NewbieGuide\层次坐标示例1.cpt

    已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\demo\NewbieGuide\层次坐标示例2.cpt

    点击下载模板:层次坐标示例1.cpt

    点击下载模板:层次坐标示例2.cpt








    附件列表


    主题: 报表设计
    标签: 暂无标签
    如果您认为本文档还有待完善,请编辑

    文档内容仅供参考,如果你需要获取更多帮助,付费/准付费客户请咨询帆软技术支持
    关于技术问题,您还可以前往帆软社区,点击顶部搜索框旁边的提问按钮
    若您还有其他非技术类问题,可以联系帆软传说哥(qq:1745114201

    此页面有帮助吗?只是浏览 [ 去社区提问 ]