反饋已提交
網絡繁忙
在线视频学习请查看:层次坐标。
如果公式很难理解,可以先学习层次坐标的进阶视频,吃透公式的基本概念和使用方法:层次坐标进阶。
在学习了 层次坐标 后,便可以将层次坐标和公式函数结合,来进行动态格间运算,比如进行比较、占比、环比、逐层累计、跨层累计、条件汇总等。
传统报表工具,一般只提供同行内的格间运算和针对某组(或全体)的集合运算,会有如下几种情况的不足:
跨行运算,如:引用上一行数据,典型应用就是做累计比和环比。
跨组运算,如:同期比等等,跨组则无能为力。
集合运算,只提供个别固定的函数,如:取第一名、算累计值等。
无法组合出通用集合运算,如:取第二名、算累计的乘积等。
某些带条件的运算,如:统计同组数据中比当前数大的个数,也就是数据排名等。
FineReport 使用层次坐标表达扩展单元格的位置,很好地解决了以上动态格间运算的问题。
本文通过示例介绍如何使用层次坐标书写计算表达式来进行动态格间运算。
效果如下图所示:
比较=本期应付金额-01月份的应付金额
将单元格扩展出的每个值与第一个值进行比较,示例中为求差值。
占比=本期应付金额/所有月份应付金额
计算单元格扩展出的每个值在总量中占据的比例。
计算每行数据与上一行数据的比率。
环比(发展速度)=本期应付金额/上期应付金额
新建数据集 ds1,数据库查询对话框中写入 SQL 查询语句:
SELECT STRFTIME('%m',订购日期) AS 月份,应付金额
FROM 订单
WHERE STRFTIME('%Y',订购日期)='2011'
如下图所示:
按照表格中的说明设计报表。
1)A1~E1 单元格依次写入字段标题名:月份,应付金额,比较,占比,环比。选中 A1~E1 单元格,设置标题预定义样式为 Head类型,如下图所示:
2)将数据集中的数据列「月份」拖入到 A2 单元格中,将数据集中的数据列「应付金额」拖入到 B2 单元格中,并在「单元格元素>数据设置」中对单元格数据进行「汇总>求和」,如下图所示:
3)在 C2 单元格写入公式 B2 - B2[A2:1],计算 B2 单元格扩展出来的数据,每一行与第一行的差值,如下图所示:
公式说明:
公式解释详情参见:层次坐标
4)在 D2 单元格写入公式B2 / SUM(B2[!0]),计算 B2 单元格扩展出来的数据,每一行在总值中的占比,如下图所示:
返回 B2 扩展出来的所有值,即3949.70,2293.65,2310.21,2116.69,1346.74,4780.93
详情参见:层次坐标常用公式
5)在 E2 单元格写入公式IF(&A2 > 1, B2 / B2[A2:-1], 0),计算 B2 单元格扩展出来的数据,每一行与上一行的比率,如下图所示:
B2[A2:-1]:返回上一个月的应付金额
B2 / B2[A2:-1]:本月应付金额/上月应付金额
详情参见本文 2.1 节。
按照年份分组,计算每一年月份应付金额的累加
分组报表中,每一组数据逐行累计。
计算所有年月应付金额累加
分组报表中,所有数据逐行累计,跨组时接着上一组累计结果继续累计。
对符合条件的数据进行汇总
SELECT STRFTIME('%Y',订购日期) AS 年份,STRFTIME('%m',订购日期) AS 月份,应付金额
WHERE STRFTIME('%Y',订购日期) IN ('2010','2011')
1)逐层累计:C2 + D2[B2:-1]
2)跨层累计:IF(&B2 > 1, C2 + E2[B2:-1], C2 + E2[A2:-1,B2:!-1])
例如:2011年01月份 返回的为 1 ;2010 年01月份 返回的也为 1
比如:2010年1月 返回0;2010 年 2 月返回 1月份对应的 E2 的值 2837.94
详情参见:层次坐标
3)条件汇总:COUNT(C2[!0]{A2=$A2 && C2>2500})
公式解释详情参见:层次坐标常用公式
$A2 获取单元格 A2 扩展后对应位置上的值
然后判断 A2 是否和 A2 扩展出去的值相等
即判断是否在同一年,由于需求为分年统计
取同时满足在同一年内,且每月应付金额大于2500的金额
比如:2010 年返回的数值为 2837.94、3596.13、2822.19、2580.17
详情参见本文 3.1 节。
已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\demo\NewbieGuide\层次坐标示例1.cpt
已完成模板可参见:%FR_HOME%\webroot\WEB-INF\reportlets\demo\NewbieGuide\层次坐标示例2.cpt
点击下载模板:层次坐标示例1.cpt
点击下载模板:层次坐标示例2.cpt
文 檔回 饋
滑鼠選中內容,快速回饋問題
滑鼠選中存在疑惑的內容,即可快速回饋問題,我們將會跟進處理。
不再提示
10s後關閉