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

 设置该单元格的左父格是【年度】,因为我们是按照【年度】分组统计的

 

posted @ 2024-03-14 11:18  马铃薯1  阅读(73)  评论(0编辑  收藏  举报