如何进行多个字段的条件查询

想实现的效果如下,请教大神怎么实现这样的效果

  1. 如果输入了开始结束时间,没输入project id,则根据时间来过滤下面报表的内容

  2. 如果没有输入数据,输入了project id,则根据输入的id来过滤

  3. 如果都没输入直接点查询,则按照空值,搜出所有内容,


    图片.png

根据豆豆的建议添加了公式,单独搜id可以,但是组合的时候id留空了,选了日期范围,只有符合日期范围的记录都显示了,没有在日期范围内的,只显示了id,其他值为空。我想要的是不符合范围的,不要显示,再次求教

图片.png


图片.png


图片.png



FineReport alanyan 发布于 2020-5-12 18:03 (编辑于 2020-5-12 18:25)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
1
lisk_njLv4初级互助
发布于2020-5-12 18:11(编辑于 2020-5-12 18:15)
SELECT * FROM 表
WHERE 1=1  
${if(len(projectid) == 0,"","and project_id = '" + projectid+ "'")}
${if(len(p_start) == 0 ,"","and p_start = '" + p_start+ "'")}
${if(len(p_end) == 0 ,"","and p_end = '" + p_end+ "'")}

大概是这样写,细节还要注意

  • alanyan alanyan(提问者) 这个sql是写在哪里呀
    2020-05-12 18:19 
  • lisk_nj lisk_nj 回复 alanyan(提问者) 模板数据集里面啊
    2020-05-12 18:25 
  • alanyan alanyan(提问者) 回复 lisk_nj 没明白什么意思,模板数据集里增加一个数据集,写上述内容? 那这个模板数据集用在哪里呢?
    2020-05-13 16:47 
最佳回答
0
豆豆小可爱Lv5中级互助
发布于2020-5-12 18:04

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


  • alanyan alanyan(提问者) 按照这个思路在过滤条件里设置了if(len(project_id)==0,nofilter,$project_id),单独按照id搜,好像是这个效果。但是跟日期那个组合起来就不太对了。日期字段过滤里也添加了end >=if(len(p_start)==0,nofilter,$p_start) and end <=if(len(p_end)==0,nofilter,$p_end)。问题上面的截图
    2020-05-12 18:22 
  • 豆豆小可爱 豆豆小可爱 回复 alanyan(提问者) 写在SQL里面,不是在过滤条件里
    2020-05-13 09:39 
  • alanyan alanyan(提问者) 回复 豆豆小可爱 没明白什么意思,写在哪个sql里,在哪用呢?
    2020-05-13 16:47 
最佳回答
0
willgood1986Lv2初级互助
发布于2020-5-12 18:27

FR的动态参数就是解决这个问题的

${if(len(p)=0, " ", " and xx=" + p)}

  • 5关注人数
  • 910浏览人数
  • 最后回答于:2020-5-12 18:27
    请选择关闭问题的原因
    确定 取消
    返回顶部