FineReport学习(三)——动态隔间运算
核心公式: 显示列[显示列的父列:偏移量]
动态格间运算案例,数据集使用默认FRDemo.db库的订单表
SELECT STRFTIME('%m',订购日期) AS 月份,应付金额 FROM 订单 WHERE STRFTIME('%Y',订购日期)='2011'
模板样式设计,这里注意B2单元格,采用汇总求和
1)绝对层次运算:显示列[显示列的父列:偏移量]
B2[A2:1],B2代表要显式的列,[A2:1]代表A2作为父列,下面的第一个偏移量,即3949.70
B2[A2:2],B2代表要显式的列,[A2:2]代表A2作为父列,下面的第二个偏移量,即2293.65
2)绝对层次运算:显示列[显示列的父列:偏移量]
B2[A2:-1],B2代表要显式的列,[A2:-1]代表A2作为父列,偏移量为-1
这里需要注意,如果左父格为默认,也就是左父格为A2,结果如下所示
如果左父格为空,结果如下所示
3)获取单元格扩展出来的所有值:B2[!0]
可以根据不同的扩展方向,显示相应的样式
4) 比较、占比、环比的操作
比较操作
因为是求下面的每一个值与第一个值的差值,因此需要写入公式,并将“比较”列设置为保留两位有效数字
占比操作
顾名思义就是计算某个单独的数据,在总量中占据的比例。
在上述操作的基础上,添加“占比”列。直接使用自带函数进行占比运算,比较简单,操作如下
调整“占比”列的格式,保存格式为“百分比”,并两位有效数字
环比操作
环比是每月与上月的数据进行一个比率运算。
在上述操作的基础上,添加“环比”列。直接使用自带函数进行环比,比较简单,操作如下。
调整“环比”列的格式,保存格式为“百分比”,并两位有效数字
5)逐层累计与跨层累计的操作
以SQL语句的结果为数据源,完成如下需求
SQL语句
select strftime('%Y',订购日期) as 年份, strftime('%m',订购日期) as 月份,应付金额 from 订单 where 年份 in('2011','2010')
逐层累计:逐层累计就是在分组报表中,每一组中分别将每层与上一层数据相加,得到这一层的累计结果,并按照年份隔断。
跨层累计:跨层累计,不按照年份隔断,一直求累加和。
将“应付金额”设置为汇总求和
接着添加“逐层累计”列和“跨层累计”列。我们都是直接使用官方自带的函数,操作如图
6)条件汇总
实现公式:
count(c2[!0]{a2=$a2 &&c2>2500})
{}里面是筛选条件,a2=$a2表示在当前A3组内;c2>2500表示总额大于或等于2500
设置该单元格的左父格是【年度】,因为我们是按照【年度】分组统计的