报表查询时,有六个控件,我想实现最后两个控件不选也能都查询到


FineReport lww19959 发布于 2018-11-19 09:05
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
1
touyuan001Lv6中级互助
发布于2018-11-19 09:10(编辑于 2018-11-19 14:51)

数据集里面那两个的条件调整成下成的格式,就可以了


例如 A B 两个参数控件


那么就在where条件后面加上

${if(len(A)==0,""," and 字段1='"+A+"'")}

${if(len(B)==0,""," and 字段2='"+B+"'")}



select *

  from (select a.*, b.dept_id, b.dept_alias

          from [       bjchbi ] . [ dbo ] . [ dm_lab_busi_qty_tat_fact ] a,

               dimdept b

         where a.request_department_id = b.dept_id) c

 where rport_date between '${sj1}' and '${sj2}'

 ${if(len(ks) == 0, "", "and c.dept_alias in ('" + ks + "')") }

 ${if(len(xmmc) == 0, "", "and c.project_name in ('" + xmmc + "')") }

 ${if(len(mzzy) == 0,"", "and c.encounter_type_id in ('" + mzzy + "')") }

 ${if(len(yxjb) == 0, "","and c.priority_indicator in ('" + yxjb + "')") }


  • lww19959 lww19959(提问者) 我想问一下字段1,2是什么啊
    2018-11-19 11:23 
  • touyuan001 touyuan001 回复 lww19959(提问者) 你查询条件里面的要过滤的列名
    2018-11-19 11:27 
  • lww19959 lww19959(提问者) 回复 touyuan001 老哥儿,我现在where后面不是等于,用的in模糊查询,怎么调整啊?
    2018-11-19 14:38 
  • touyuan001 touyuan001 回复 lww19959(提问者) select * from (select a.*, b.dept_id, b.dept_alias from [ bjchbi ] . [ dbo ] . [ dm_lab_busi_qty_tat_fact ] a, dimdept b where a.request_department_id = b.dept_id) c where rport_date between \'${sj1}\' and \'${sj2}\' ${if(len(ks) == 0, \"\", \"and c.dept_alias in (\'\" + ks + \"\')\") } ${if(len(xmmc) == 0, \"\", \"and c.project_name in (\'\" + xmmc + \"\')\") } ${if(len(mzzy) == 0,\"\", \"and c.encounter_type_id in (\'\" + mzzy + \"\')\") } ${if(len(yxjb) == 0, \"\",\"and c.priority_indicator in (\'\" + yxjb + \"\')\") }
    2018-11-19 14:48 
  • touyuan001 touyuan001 回复 lww19959(提问者) 按你图中的语句改了下,当下面那4个参数为空的时候,就不过滤对应内容
    2018-11-19 14:49 
最佳回答
1
axingLv6专家互助
发布于2018-11-19 09:08
下拉框参数为空选择全部-http://help.finereport.com/doc-view-2394.html
最佳回答
0
No1-王子阳Lv5中级互助
发布于2018-11-19 10:00

以上两位的方法都没有问题,你可以尝试一下。

最佳回答
0
luhansonLv3见习互助
发布于2018-11-19 10:38

WHERE  字段XX=CASE WHEN '${XXX}' <> '' then '${XXX}' else 字段XX

最佳回答
0
晓亮Lv7资深互助
发布于2018-11-19 14:55

sql可以用(nvl(参数,'1')='1' or nvl(参数,'1')<>'1'  and 字段条件>参数)

  • 6关注人数
  • 1036浏览人数
  • 最后回答于:2018-11-19 14:55
    请选择关闭问题的原因
    确定 取消
    返回顶部