最佳回答
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')")}
敢敢以前叫憨憨(提问者)
- 能不能详细一点,没看太明白
鱼仔仔家的荣荣 回复 敢敢以前叫憨憨(提问者)
- 比如你时间段的那一句 and可以改为
${if(len(开始日期)==0,\"\",\"AND OGA02 >= to_date(\'\"+开始日期+\"\',\'yyyy-mm-dd\')\")}
${if(len(结束日期)==0,\"\",\"AND OGA02 <= to_date(\'\"+结束日期+\"\',\'yyyy-mm-dd\')\")}
意思就是 如果 开始日期那个控件的长度为0 ,就返回空,有长度 就返回后面那个AND语句 这样明白了吗
敢敢以前叫憨憨(提问者) 回复 鱼仔仔家的荣荣
- \\是啥意思呀?
鱼仔仔家的荣荣 回复 敢敢以前叫憨憨(提问者)
- 回答自动加上去了。。
\\这个你去掉就行
鱼仔仔家的荣荣 回复 敢敢以前叫憨憨(提问者)
- 我改到第一个回答里了 你看一下
取消
评论
最佳回答
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
lincoder Lv5 初级互助 发布于2020-11-19 09:01
(1=1 ${if(len(代码) == 0,"","and code in ('" +代码 + "')")})
三个条件都按这个写,如果为空则1=1
最佳回答
0
shiroko Lv6 资深互助 发布于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
青鸟ekko Lv6 见习互助 发布于2020-11-19 13:58(编辑于 2020-11-19 14:01)
这种有个很简单的解决方案,因为你的时间段,订单单号都是参数,所以sql正常写,取全部就行,重点在于我们主表的字段的筛选条件,用我这个公式即可if(len($部门) = 0, nofilter, $部门),然后部门换成你的参数名即可,意思就是空值取全部的意思,不需要写那么复杂的sal语句