财务报表的本期和年累如何实现

22.jpg

如图,月份为数据集的参数,如果选择了月份,就无法统计年累数据,请问有没解决方案

FineReport liyh13 发布于 2023-10-10 16:56
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-10-10 16:56(编辑于 2023-10-10 17:04)

多写一个数据集呀。查询累计的数据

我做了N个财务的这些报表,因为这种都是固定的格式,是不会变的,而且变的话会很小,所以分开写多个数据集,一个求当月的,一个求累计的。

image.png

image.png

比如累计里面的sql代码

AND ba.period_year = ${period_year}

AND ba.period_num <= ${period_num}/*小于等于月份*/

本月的代码

AND ba.period_year = ${period_year}

AND ba.period_num = ${period_num}/*只要本月的*/

  • liyh13 liyh13(提问者) 两个数据集,两个参数,如何设置筛选条件呢
    2023-10-10 17:03 
  • CD20160914 CD20160914 回复 liyh13(提问者) 一样的设置呀,你的参数名称一样,就行了。
    2023-10-10 17:03 
  • CD20160914 CD20160914 回复 liyh13(提问者) 参数上面的语句,累计就是1-N月,
    2023-10-10 17:05 
  • CD20160914 CD20160914 回复 liyh13(提问者) 我们公司年字段和月字段是分开的数字。所以直接这样就行了,不知道你们公司的字段是如何的
    2023-10-10 17:05 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-10-10 16:56

分开写两个数据集呗

最佳回答
0
JL98Lv6中级互助
发布于2023-10-10 17:26(编辑于 2023-10-10 17:27)

里面的函数换成对应数据库的就好了

SELECT 

行次,

case when  年 = year($月份)and 年月 <=$月份 THEN SUM(金额) ELSE 0 END AS 年累,

case when   年月 = $月份 THEN SUM(金额) ELSE 0 END AS 当月

FROM 表名

group by 行次

  • CD20160914 CD20160914 我认你这样写的效率慢,虽然是一个数据集,如果一张表里面数据多,你不限制时间,这样的查询效率其实很慢
    2023-10-10 17:27 
  • JL98 JL98 回复 CD20160914 下面也可以用where把年限定住的,应该会比两个数据集页面过滤快的
    2023-10-10 17:29 
  • 3关注人数
  • 257浏览人数
  • 最后回答于:2023-10-10 17:27
    请选择关闭问题的原因
    确定 取消
    返回顶部