如下图用excel做的例子,在数据集中的字段有学年,学期和汇总,然后想做环比计算。
学年和学期为两个控件
学年有默认值,如果在只选择学年的时候,就只做学年的环比计算;
要是选择学期的话,要看这个学年是上学期还是下学期,要是下学期就跟同一学年的上学期做环比计算,要是选择上学期,就要跟上个学年的下学期计算。
哪位大神知道怎么解决啊?不一定要在report里用公式解决,也可以用sql。
实现样子:
用sql写吧,先用一个 with as对求出的各个学年、学期的汇总数做个存储,然后做过滤;
例如除数的过滤为:select 汇总 from 表
case when ${学期控件} = '下学期' then 学年 = ${学年控件} and ${学期控件} = '上学期'
when ${学期控件} = '上学期' then 学年 = concat(left(学年控件,4)-1,'-',right(学年控件,4)-1) and ${学期控件} = '下学期'
end -- 用if也行
被除数的过滤为:select 汇总 from 表
where 学年 = ${学年控件} and 学期 = ${学期控件}
-----
主要意思就是把除数与被除数分别求出来,然后关联计算即可
有个简单方法:你把报表做成按照 学年、学期、值、学年环比、学期环比 的样式,这样,每条数据都有学年环比和学期环比。
你只需要根据控件选择去隐藏相应的行列就行了(条件属性-行高、列宽)
D5=C5/C5[A5:!-1]-1
A5要分组展示 ,不能是列表
可以用层次坐标解决,环比公式:当前单元格/向下一个位置的单元格 -1(需要排序被除数未空或未0的情况),a2是左父格的位置