历史版本21 :跨层累计 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

跨层累计相对于逐层累计而言,不是每组分别累计,而是从第二组开始在上一组的累计结果上继续累计。

1.1.1 纵向跨层累计

如下图所示:

222

1.1.2 横向跨层累计

如下图所示:

1614060190511366.png


2. 纵向跨层累计编辑

2.1 数据准备

打开报表%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\逐层累计.cpt

修改数据集ds1的数据库查询语句为select strftime('%Y',订购日期) as 年份,strftime('%m',订购日期) as 月份,应付金额 from 订单 where strftime('%Y',订购日期) in ('2010','2011')

Snag_750362.png

2.2 报表设计

方法一:

在 D3 单元格中,写入公式:=IF(&B3 >1, D3[B3:-1] + C3, D3[A3:-1,B3:!-1] + C3)=IF(&B3 >1, D3[B3:-1], D3[A3:-1,B3:!-1]) + C3,如下图所示:

公式说明:

公式说明
D3[B3:-1]

求上一次累计结果

上一个 B3(上月)对应的 D3 的值

D3[A3:-1,B3:!-1]

求上一组最后一个累计结果

上一个 A3(上一年)中 B3 扩展出来的最后一个对应的 D3 的值

IF(&B3 >1, D3[B3:-1], D3[A3:-1,B3:!-1]) + C3如果&B3>1,从第二月开始,求上一次累计结果加该月金额,否则当为第一个月时,求上一组最后一个累计结果加上当前月的金额。

3.3 效果预览

方法二:

在 D3 单元格中直接写跨层累计公式=CROSSLAYERTOTAL(A3, B3, C3, D3),等同于公式=IF(&B3 >1, D3[B3:-1] + C3, D3[A3:-1,B3:!-1] + C3),如果为横向扩展,则传递第五个参数 false,例如:=CROSSLAYERTOTAL(A3, B3, C3, D3,false)

2.3 效果预览

保存模板,预览效果详情参见本文 1.1.1 节。

模板效果在线查看请点击 跨层累计.cpt

已完成模板可参考%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\跨层累计.cpt

点击下载模板:跨层累计.cpt

3. 横向跨层累计编辑

3.1 数据准备

打开报表%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\跨层累计.cpt

修改数据集 ds1 的数据库查询语句为:select strftime('%Y',订购日期) as 年份,strftime('%m',订购日期) as 月份,应付金额 from 订单 where strftime('%Y',订购日期) in ('2010','2011')如下图所示:

3.2 报表设计

设计报表,如下图所示:

在 B5 单元格中,写入公式:=IF(&B3 > 1, B5[;B3:-1], B5[;B2:-1,B3:!-1]) + B4

公式说明:

公式说明
B5[;B3:-1]

求上一次累计结果

上一个 B3(上月)对应的 B5 的值

B5[;B2:-1,B3:!-1]

求上一组最后一个累计结果

上一个 B2(上一年)中 B3 扩展出来的最后一个对应的 B5 的值

IF(&B3 > 1, B5[;B3:-1], B5[;B2:-1,B3:!-1]) + B4如果&B3>1,从第二月开始,求上一次累计结果加该月金额,否则当为第一个月时,求上一组最后一个累计结果加上当前月的金额。

3.3 效果预览

保存模板,预览效果详情参见本文 1.1.2 节。

已完成模板可参考%FR_HOME%\webroot\WEB-INF\reportlets\doc\Advanced\Cacuate_Between_Cells\跨层累计_横向.cpt

模板效果在线查看请点击 :跨层累计_横向.cpt

4. 注意事项编辑

在层次坐标中,可以通过 !-1 来获取某个单元格扩展出来的最后一个。

D3[B3:!-1]表示 B3 单元格扩展出来的最后一个对应的 D3 的值。