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

目录:

1. 概述编辑

注:11.0.4 及以后版本用户推荐使用 ACCSUM 函数实现跨层累计。

1.1 应用场景

跨层累计:不按分组进行累计,而是按照从上到下的顺序一直求累加和。

例如下图示例,对 2010 - 2011 年进行跨层累计。

2021-06-18_10-34-01.png

1.2 实现思路

通过公式 IF(&B2 > 1, C2 + D2[B2:-1], C2 + D2[A2:-1,B2:!-1]) 进行跨层累计。

2. 示例编辑

2.1 数据准备

新建普通报表,新建数据查询 ds1 ,SQL语句为:

SELECT STRFTIME('%Y',订购日期) AS 年份,STRFTIME('%m',订购日期) AS 月份,应付金额

FROM 订单

WHERE STRFTIME('%Y',订购日期) IN ('2010','2011')

1623294427106300.png

2.2 报表设计

如下图设计表格,将 ds1 中的字段拖到 A2、B2、C2 ,D3 单元格用于计算跨层累计数据。

2021-06-18_10-32-21.png

D3 单元格公式为:IF(&B2 > 1, C2 + D2[B2:-1], C2 + D2[A2:-1,B2:!-1]),公式拆解后的说明如下表所示:

公式拆解说明
IF(A, B, C)条件表达式,如果A为真,返回B,否则,返回C
&B2 > 1条件表达式一部分,判断月份是不是第一个月
D2[B2:-1]

求上一次累计结果,即上一个 B2(上月)对应的 D2 的值

D2[A2:-1, B2:!-1]

求上一组最后一个累计结果,即上一个 A2(上一年)中 B2 扩展出来的最后一个对应的 D2 的值

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

2.3 效果预览

保存模板,点击分页预览,如下图所示:

2021-06-18_10-34-01.png

支持 App 端和 HTML5 端预览,效果如下图所示:

1623983813483211.jpg

3. 模板下载编辑

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