FineReport学习(三)——动态隔间运算

2021-11-25 10:29:54 浏览数 (2)

目录

1、动态隔间运算入门说明 2、入门小案例 3、“比较”、“占比”、“环比”的操作 4、“逐层累计”与“跨层累计”的操作 5、条件汇总

1、动态隔间运算入门说明
  • 首先提供一个公式,公式:“显示列[显示列的父列:偏移量]”。此时你不需要知道这个公式是什么意思,目前有个印象就行,通过下面的学习你就明白了。
  • 动态隔间运算类似于EXCEL表格中的公式运算,相当于你在某个单元格中输入“=…”这样的公式。定义不太好叙述,下面通过案例说明,更为直观。
2、入门小案例

首先,新建一个普通报表–>利用sql选择需要导入的数据集

代码语言:javascript复制
select strftime('%m',订购日期) as 月份,应付金额 from 订单
where strftime('%Y',订购日期) = '2011'

效果如下:

接着进行模板样式的设计,及绑定数据。

效果预览

① 进行第一个动态隔间运算
代码语言:javascript复制
-- 公式: 显示列[显示列的父列:偏移量]
=b2[a2:-1]
-- 注意:-1表示的是偏移量。
-- 当偏移量为正数,表示正着数,偏移量分别是1,2,3...
-- 当偏移量为正数,表示倒着数,偏移量分别是-1,-2,-3...    

在任意单元格,输入如下公式

保存后,进行效果预览

② 进行第二个动态隔间运算
代码语言:javascript复制
-- 公式: 显示列[显示列的父列:偏移量]
=b2[!0]

在任意单元格,输入如下公式

保存后,进行效果预览

此时将该单元格,设置为横向扩展

同时设置数字保留位数,为两位小数

再次保存后,进行效果预览

③ 进行第三个动态隔间运算:筛选去掉某些数字
代码语言:javascript复制
-- 公式: 显示列[显示列的父列:偏移量]
=b2[!0]{a2!=3}

在任意单元格,输入如下公式,调整为横向扩展,设置小数保留为2位有效数字

保存后,进行效果预览

3、“比较”、“占比”、“环比”的操作
代码语言:javascript复制
select strftime('%m',订购日期) as 月份,应付金额 
from 订单
where strftime('%Y',订购日期) = '2011'

以上述SQL语句的结果为数据源,完成如下需求。

① 比较
  • 应付金额中的每一个值,与第一个值进行比较,做差运算。

首先,新建一个普通报表模板,然后导入数据。

接着,设计报表样式,然后绑定数据源。将“应付金额”保留两位有效数字。

然后,将“应付金额”设置为汇总求和。

再接着,添加“比较”列。因为是求下面的每一个值与第一个值的差值,因此需要写入公式(公式如图所示)。并将“比较”列设置为保留两位有效数字。

保存后,效果预览如下

② 占比
  • 占比,顾名思义就是计算某个单独的数据,在总量中占据的比例。

在上述操作的基础上,添加“占比”列。直接使用自带函数进行占比运算,比较简单,操作如下。

然后调整“占比”列的格式,保存格式为“百分比”,并两位有效数字。

保存后,效果预览如下

③ 环比
  • 环比是每月与上月的数据进行一个比率运算。

在上述操作的基础上,添加“环比”列。直接使用自带函数进行环比,比较简单,操作如下。

然后调整“环比”列的格式,保存格式为“百分比”,并两位有效数字。

保存后,效果预览如下

4、“逐层累计”与“跨层累计”的操作
代码语言:javascript复制
select strftime('%Y',订购日期) as 年份, strftime('%m',订购日期) as 月份,应付金额 
from 订单
where 年份 in('2011','2010')

以上述SQL语句的结果为数据源,完成如下需求。

  • 逐层累计:逐层累计就是在分组报表中,每一组中分别将每层与上一层数据相加,得到这一层的累计结果,并按照年份隔断。
  • 跨层累计:跨层累计,不按照年份隔断,一直求累加和。

首先,新建一个普通报表模板,然后导入数据。

接着,设计报表样式,然后绑定数据源。将“应付金额”保留两位有效数字。

然后,将“应付金额”设置为汇总求和。

接着添加“逐层累计”列和“跨层累计”列。我们都是直接使用官方自带的函数,操作如图。先添加“逐层累计”列,效果如下:

再添加“跨层累计”列,效果如下:

接着,将“逐层累计”列和“跨层累计”列,分别保留两位小数位。

保存后,效果预览

5、条件汇总

图中红色方框中,属于条件汇总。

写入公式:=count(c2[!0]{a2=KaTeX parse error: Expected 'EOF', got '&' at position 4: a2 &̲&c2>2500}):c2扩展…a2 &&c2>2500},{}里面是筛选条件,a2=$a2表示在当前A3组内;c2>2500表示总额大于或等于2500。

代码语言:javascript复制
count(c2[!0]{a2=$a2 &&c2>2500})

首先,我们在单元格中输入上述公式

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

保存后,进行效果预览

0 人点赞