我想在不同情况下查询数据集都能生效,请大神指点一下,很急!!!(oracle数据库)

比如有三种情况:

1.只根据时间段查询,不填写订单单号.

2.只根据订单单号查询,不填写时间段

3.订单单号和时间段都填写


FineReport 敢敢以前叫憨憨 发布于 2020-11-19 08:52 (编辑于 2020-11-19 08:53)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
鱼仔仔家的荣荣Lv4初级互助
发布于2020-11-19 08:59(编辑于 2020-11-19 11:07)

用if来判断

eg:${if(len(参数a)==0,"","AND OGB31 = '"+参数a+"'")}

${if(len(参数b)==0,"","AND OGA02 >= '"+参数b+"'")}

${if(len(参数c)==0,"","AND OGA02 <= '"+参数c+"'")}

时间段的那一句 and可以改为 ${if(len(开始日期)==0,"","AND OGA02 >= to_date('"+开始日期+"','yyyy-mm-dd')")} ${if(len(结束日期)==0,"","AND OGA02 <= to_date('"+结束日期+"','yyyy-mm-dd')")}

  • 敢敢以前叫憨憨 敢敢以前叫憨憨(提问者) 能不能详细一点,没看太明白
    2020-11-19 09:03 
  • 鱼仔仔家的荣荣 鱼仔仔家的荣荣 回复 敢敢以前叫憨憨(提问者) 比如你时间段的那一句 and可以改为 ${if(len(开始日期)==0,\"\",\"AND OGA02 >= to_date(\'\"+开始日期+\"\',\'yyyy-mm-dd\')\")} ${if(len(结束日期)==0,\"\",\"AND OGA02 <= to_date(\'\"+结束日期+\"\',\'yyyy-mm-dd\')\")} 意思就是 如果 开始日期那个控件的长度为0 ,就返回空,有长度 就返回后面那个AND语句 这样明白了吗
    2020-11-19 09:07 
  • 敢敢以前叫憨憨 敢敢以前叫憨憨(提问者) 回复 鱼仔仔家的荣荣 \\是啥意思呀?
    2020-11-19 10:17 
  • 鱼仔仔家的荣荣 鱼仔仔家的荣荣 回复 敢敢以前叫憨憨(提问者) 回答自动加上去了。。 \\这个你去掉就行
    2020-11-19 11:05 
  • 鱼仔仔家的荣荣 鱼仔仔家的荣荣 回复 敢敢以前叫憨憨(提问者) 我改到第一个回答里了 你看一下
    2020-11-19 11:07 
最佳回答
0
孤陌Lv6资深互助
发布于2020-11-19 09:01(编辑于 2020-11-19 09:03)

帮助文档参考参数为空选择全部就好了

SELECT * FROM 订单 

WHERE 1=1  

${if(len(area) == 0,"","and 货主地区 = '" + area + "'")}

下拉框参数为空选择全部-https://help.fanruan.com/finereport/doc-view-2394.html

最佳回答
0
lincoderLv5初级互助
发布于2020-11-19 09:01

(1=1  ${if(len(代码) == 0,"","and code in ('" +代码 + "')")})   

三个条件都按这个写,如果为空则1=1

最佳回答
0
shirokoLv6资深互助
发布于2020-11-19 09:04

ORACLE 不支持这种写法吧,用FR的if

${IF(LEN(订单单号)>0,
"SELECT ...... BETWEEN to_date('"+开始日期+"','yyyy-mm-dd') and to_date('"+结束日期+"','yyyy-mm-dd') ....",
"SELECT ...... BETWEEN to_date('"+开始日期+"','yyyy-mm-dd') and to_date('"+结束日期+"','yyyy-mm-dd') ...."
) }


最佳回答
0
青鸟ekkoLv6见习互助
发布于2020-11-19 13:58(编辑于 2020-11-19 14:01)

这种有个很简单的解决方案,因为你的时间段,订单单号都是参数,所以sql正常写,取全部就行,重点在于我们主表的字段的筛选条件,用我这个公式即可if(len($部门) = 0, nofilter, $部门),然后部门换成你的参数名即可,意思就是空值取全部的意思,不需要写那么复杂的sal语句

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