我有个数据集,需要根据某个参数传的四种不同值,来执行不同的四条sql该怎么写啊?

image.pngimage.png

FineReport 用户N1887570 发布于 2022-2-18 11:04 (编辑于 2022-2-18 11:36)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
snrtuemcLv8专家互助
发布于2022-2-18 11:11(编辑于 2022-2-18 12:19)

那就switch判断,其实if嵌套也可以

${switch(控件名,"上","SQL1","中","SQL2","下","SQL3","不选","SQL4")}

==============

类似下面的

${switch(控件名,"上","select * from 表 where 字段='"+参数+"'","中","SQL2","下","SQL3","不选","SQL4")}

===============

注意,把你原来的${}去掉就可以,

${switch(控件名,"上",你原来的sql语句,"中","SQL2","下","SQL3","不选","SQL4")}

====================

${switch(部位,"上",if(len(等级)=0,"select * from  A","select * from B"),"中",if(len(等级)=0,"select * from  C","select * from D"),"下",if(len(等级)=0,"select * from  E","select * from F"))}

  • 用户N1887570 用户N1887570(提问者) 但问题 我里面还有一层‘等级’参数判断 格式该怎么写啊?
    2022-02-18 11:16 
  • snrtuemc snrtuemc 回复 用户N1887570(提问者) 那就直接拼接,我修改答案看下
    2022-02-18 11:17 
  • 用户N1887570 用户N1887570(提问者) 额 不是这个意思 你看我图上嘛,等级参数不同,会执行两个不同的sql
    2022-02-18 11:19 
  • snrtuemc snrtuemc 回复 用户N1887570(提问者) switch中还要if是吧,那你就把你原来的整个,直接拷贝,放进去,去掉${}就可以,看修改答案
    2022-02-18 11:24 
  • 用户N1887570 用户N1887570(提问者) 回复 snrtuemc 上面那个你看下对不呀
    2022-02-18 11:46 
最佳回答
1
北纬六十六度Lv4中级互助
发布于2022-2-18 11:25

直接写个存储过程啊,过程里根据参数判断执行哪个过程

最佳回答
1
梦想的初衷Lv7初级互助
发布于2022-2-18 11:31(编辑于 2022-2-18 11:33)

写4个数据集,用关联数据集,根据参数取不同的数据集或者用if判断写在一个里面

${if(部位=="上","

select * from a

where 1=1

"+if(len(等级)==0,""," and  列名 in ('"+等级+"')")+"

 "," ")}

${if(部位=="中","

select * from b

where 1=1

"+if(len(等级)==0,""," and  列名 in ('"+等级+"')")+"

"," ")}

以此类推

最佳回答
1
HyggeLv5见习互助
发布于2022-2-18 16:08

原理是参数不是该值时输出/*  */注释掉不需要运行的sql

${if(部门=="上","","/*")}

对应执行的sql

${if(部门=="上","","*/")}

${if(部门=="中","","/*")}

对应执行的sql

${if(部门=="中","","*/")}

${if(部门=="下","","/*")}

对应执行的sql

${if(部门=="下","","*/")}

${if(len(部门)==0,"","/*")}

对应执行的sql

${if(len(部门)==0,"","*/")}

  • wyx1949 wyx1949 谢谢大佬,学习了
    2022-06-17 10:30 
  • 5关注人数
  • 1133浏览人数
  • 最后回答于:2022-2-18 16:08
    请选择关闭问题的原因
    确定 取消
    返回顶部