根据不同的参数值,执行不同的sql语句

如果${表名}=A,执行sql1     如果${表名}=B,执行sql2

FineReport ATM 发布于 2019-7-2 16:27
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
2
doudekaixinLv6中级互助
发布于2019-7-2 16:36
${if(表名=="A","sql1",if(表名=="B","sql2",""))}


  • ATM ATM(提问者) 这种是写在数据集里面吗?
    2019-07-02 16:41 
  • doudekaixin doudekaixin 回复 ATM(提问者) 嗯,难道你不是要写在数据集里?
    2019-07-02 16:47 
  • ATM ATM(提问者) 回复 doudekaixin 我本来写数据集的,我看楼上是用那种写在公式里面
    2019-07-02 16:48 
  • ATM ATM(提问者) 回复 doudekaixin ${if(${表名}==\"A\",\"select * from A\",if(${表名}==\"B\",\"select * from B\",\"\"))} 提示$附近语法错误 这个${表名}参数是下拉选框获取的
    2019-07-02 16:59 
  • doudekaixin doudekaixin 回复 ATM(提问者) 外层有$了,参数就不用了,认真看我的代码。你只改你需要修改的地方
    2019-07-02 17:02 
最佳回答
1
firegunzxLv6高级互助
发布于2019-7-2 16:31(编辑于 2019-7-2 17:08)

单元格插入公式

=if(表名 = A,sql("数据源", "select 字段 from A", 1, 1), sql("数据源", "select 字段 from B", 1, 1))


数据集写法:

表名有空值或者其他值:${if(表名 == "A","sql1",if(表名=="B","sql2","默认sql"))}

表名限制只有两个参数值:${if(表名 == "A","sql1","sql2")}

前提:保持sql1,sql2,默认sql的字段名称和数量一致

另外,如果公式前后有sql语句拼接,要注意所有表名参数情况下的sql合法性,打开日志dubug模式,可以查看生成的sql语句,方便修改。

日志dubug模式打开方式:模版-》选项-》高级-》log级别设置

image.png

  • ATM ATM(提问者) 要把全部sql写进公式里面吗?能不能 在公式判断下拉控件的值如果是A就查第一个数据集,控件的值如果是B就查另一个数据集里面的语句
    2019-07-02 16:44 
  • firegunzx firegunzx 回复 ATM(提问者) 数据集里这么写 ${if(表名 == \"A\",\"sql1\",if(表名==\"B\",\"sql2\",\"默认sql\"))} 前提:保持sql1,sql2,默认sql的字段名称和数量一致
    2019-07-02 17:01 
  • ATM ATM(提问者) 回复 firegunzx 怎么发图片 我的语句颜色好像是红的 但是对照几遍都对了
    2019-07-02 17:39 
最佳回答
1
ATMLv2见习互助
发布于2019-7-2 19:08

如果where条件中包含的还有${A}这种参数   直接拼接 不用$符了  '"+A+"'

  • 3关注人数
  • 2813浏览人数
  • 最后回答于:2019-7-2 19:08
    请选择关闭问题的原因
    确定 取消
    返回顶部