1.问题描述
若数据库中存在一列数据是日期,希望输入本期、上期日期范围的时候,查询出上期、本期所在时间段的数据,如下图所示,此时要如何实现呢?
2.操作步骤
2.1 数据准备
在 FineReport 设计器中,点击「文件>新建普通报表」,并新建数据库查询数据集 ds1 ,SQL 语句为:
select 省份,sum(case when date_format(销售日期,'%Y-%m-%d')>='${sqstarttime}' and date_format(销售日期,'%Y-%m-%d')<='${sqendtime}' then 销售量 else 0 end) 上期销量
,sum(case when date_format(销售日期,'%Y-%m-%d')>='${bqstarttime}' and date_format(销售日期,'%Y-%m-%d')<='${bqendtime}' then 销售量 else 0 end) 本期销量,SUM(case when date_format(销售日期,'%Y-%m-%d')>='${sqstarttime}' and date_format(销售日期,'%Y-%m-%d')<='${sqendtime}' then 销售额 else 0 end) 上期销售额,SUM(case when date_format(销售日期,'%Y-%m-%d')>='${bqstarttime}' and date_format(销售日期,'%Y-%m-%d')<='${bqendtime}' then 销售额 else 0 end) 本期销售额
from sales group by 省份 ;
sqstarttime为上期开始时间参数
sqendtime为上期结束时间参数
bqstarttime为本期开始时间参数
bqendtime为本期结束时间参数
2.2 模板设计
模板设计最终效果如下图所示:
①将字段拖入对应的位置;
②对需要计算的内容进行公式的编辑;
③进行数据展示格式的调整;(增长率设置为百分比格式)
2.3 添加控件
1)进入「参数面板」,在右侧属性面板控件设置 界面将参数全部添加;将参数全部设置为「日期控件」;(下图为其中一个的示例,其余雷同)
在全部参数设置好后,调整位置顺序如下图所示:
2.4 效果查看
保存模板,点击分页预览,效果如下相同。