报表内如何自动生成起止时间内的所有日期序列

需求

用户输入两个日期(开始日期、结束日期)筛选,要求报表内按该时间段内的所有日期统计数据。

比如,选择参数值开始日期为“2021-09-27”,结束为“2021-10-04”,按如下格式,自动生成并扩展完成按地区每日销售额数据统计:

10png

分析及方案

我们可能想到的办法是根据报表提供的函数,算出两个时间的间隔天数,然后借助 to() 函数用开始时间与间隔天数算出区间内的日期。

这个方法也基本上是遇到类似需求时,当前在使用的方法。但是润乾新版本(20211027 及以后版本使用,低于该版本的需升级)中有了更简单的方法,增加了 spl()函数,该函数支持动态解析并计算集算器表达式,对于上面问题变简单的原因是:集算器日期时间函数有 periods() 函数,可以“按照指定时间间隔获取日期时间序列”,即可直接算出时间区间内的所有日期并返回, 我们可以借助 spl() 使用 periods 帮我们返回时间序列直接使用。

实例

接下来我们结合简单实例,看看具体的用法

1、 准备一个带俩时间参数的报表

可参考附件“各地区每日销售额统计.rpx”

20png

数据集用自带 demo 库的订单表:

SELECT 货主地区, 订购日期, 订单金额 FROM 订单 WHERE 订单. 订购日期 >=? AND 订单. 订购日期 <=?

2、 定义表达式(spl() 的使用)

这里我们着重说时间区间序列的表达式,可见单元格 B1

=split(spl(“periods(date(?),date(?),1)”,@sDate,@eDate),“,”)

spl()函数内是借助 periods() 函数的集算器计算表达式, 上面结果返回逗号隔开的时间序列字符串,再通过报表函数 split 拆开即可。

30png

A2 及 B2 参考模板文件内表达式。

3、 看效果

选择开始日期“2012-09-28”,结束日期“2012-10-04”,报表结果

40png

随便换其他查询时间

50png

时间区间内日期均可自动扩展。

有了 spl() 函数,我们可以在报表单元格内借助数据处理更强大的集算器处理复杂或特殊问题,更加方便自如,后续如果遇到较难处理的计算问题,不妨往此方向思考下。

补充:20211027 之前发布的版本可以用 esproc()函数(如不支持那就是版本过早,建议更新值最新版),新版本内由 spl() 替换,功能相同。

以下是广告时间

对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅



嗯,还不太了解好多乾?
猛戳这里
玩转好多乾