求助,FineReport使用SQL数据集参数
2个回答
2018-07-27 · 上BI选帆软,专注BI十三年!
关注
展开全部
大致的步骤就是先取出所有数据,再进行过滤,取数,过滤。
简单应用:SELECT * FROM 销量 where 地区 = '${地区}'
带公式的应用:SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} ${if(len(province) == 0,"","and 货主省份 = '" + province + "'")}
具体步骤如下:
1、打开报表
2、定义数据源参数
修改数据集sql语句为:SELECT * FROM 销量 where 地区 = '${地区}',点击下方的刷新按钮显示出参数,默认值设置为“华北”
3、过滤数据
若参数地区的值为华北,那么${地区}这个参数宏最终的值就是华北,数据集sql即为:SELECT * FROM 销量 where 地区 = '华北'
4、制作参数界面
5、保存报表并发布
展开全部
类似通信、监控行业,每天都有海量数据生成,数据库表中总数据量非常大,而报表中往往只要当天的几百条数据就可以了。
如果使用报表参数,就需要先取出所有数据,再进行过滤,取数+过滤,将消耗大量时间;
简单应用
可以在定义数据集sql的时候,直接使用where条件过滤出需要的数据,从而大大缩短报表取数时间,类似下面的sql:
SELECT * FROM 销量 where 地区 = '${地区}'
带公式的应用
数据集sql中可以使用参数宏${}动态地生成过滤条件,${}中的语句在FineReport报表中执行,将${}的执行结果与sql语句拼接起来形成最终的查询语句,传递给数据库执行,可以使用多个${},如下语句:
SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} ${if(len(province) == 0,"","and 货主省份 = '" + province + "'")}
${}中可以使用所有内置的FR公式,如if函数;
如果使用报表参数,就需要先取出所有数据,再进行过滤,取数+过滤,将消耗大量时间;
简单应用
可以在定义数据集sql的时候,直接使用where条件过滤出需要的数据,从而大大缩短报表取数时间,类似下面的sql:
SELECT * FROM 销量 where 地区 = '${地区}'
带公式的应用
数据集sql中可以使用参数宏${}动态地生成过滤条件,${}中的语句在FineReport报表中执行,将${}的执行结果与sql语句拼接起来形成最终的查询语句,传递给数据库执行,可以使用多个${},如下语句:
SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} ${if(len(province) == 0,"","and 货主省份 = '" + province + "'")}
${}中可以使用所有内置的FR公式,如if函数;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询