根据参数,执行不同的sql

如何根据参数,执行不同的sql呢?

我写了if语法:

${if(p_base_factory='厦门',

"

select * from(

select   *  from  tianma_bi.dws_panel_full_cost_actual_engineer_yield   where base_factory  ='厦门'

  union  all

  select  t1.*  from      

                   (select   *  from  tianma_bi.dws_panel_full_cost_actual_engineer_yield   where base_factory  ='上海' )  t1  

             join  (select   *  from  tianma_bi.dws_panel_full_cost_actual_engineer_yield    where base_factory  ='厦门') t2

on t1.code_name=t2.item_name

)a

 ",

"

select * from(

select *

from tianma_bi.dws_panel_full_cost_actual_engineer_yield

where 1=1

and base_factory in ('"+p_base_factory+"')  

)a  

 ")}

这个是可以实现的,但我还有其他参数,比如

1、${if(len(p_process)=0,"","and process in ('"+p_process+"')")}

我要把这个参数,嵌套在上面的2个sql中,要怎么写

2、每个sql后面,我还需要

limit ${(pageNum - 1) * 100},100

又要怎么嵌套呢?

FineReport 小沙鱼 发布于 2023-10-18 17:00
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-10-18 17:03(编辑于 2023-10-18 17:17)

${if(p_base_factory='厦门',

"

select * from(

select   *  from  tianma_bi.dws_panel_full_cost_actual_engineer_yield   where base_factory  ='厦门'

  union  all

  select  t1.*  from      

                   (select   *  from  tianma_bi.dws_panel_full_cost_actual_engineer_yield   where base_factory  ='上海' )  t1  

             join  (select   *  from  tianma_bi.dws_panel_full_cost_actual_engineer_yield    where base_factory  ='厦门') t2

on t1.code_name=t2.item_name

)a WHERE 1=1 "+ if(len(p_process)=0,"","and process in ('"+p_process+"')")+" limit "+(pageNum - 1) * 100+",100

 ",

"

select * from(

select *

from tianma_bi.dws_panel_full_cost_actual_engineer_yield

where 1=1

and base_factory in ('"+p_base_factory+"')  

)a  WHERE 1=1 "+ if(len(p_process)=0,"","and process in ('"+p_process+"')")+" limit "+(pageNum - 1) * 100+",100

 ")}

------------

image.png

image.png

  • 小沙鱼 小沙鱼(提问者) 这个执行不了呢,报错了:com frgeneral.data. TableDataException: 错误代码:11300001 数据集配置错误 #42000
    2023-10-18 17:12 
  • 小沙鱼 小沙鱼(提问者) 问题出在了这代码:\" limit \"+(pageNum - 1) * 100+\",100
    2023-10-18 17:16 
  • Z4u3z1 Z4u3z1 回复 小沙鱼(提问者) 这个可能和数据库类型有关了
    2023-10-18 17:18 
  • Z4u3z1 Z4u3z1 回复 小沙鱼(提问者) 从传递的参数来看是没问题的,剩下的SQL语法我不清楚了
    2023-10-18 17:22 
  • 小沙鱼 小沙鱼(提问者) 回复 Z4u3z1 我这边是mysql数据库
    2023-10-18 17:52 
  • 2关注人数
  • 513浏览人数
  • 最后回答于:2023-10-18 17:17
    请选择关闭问题的原因
    确定 取消
    返回顶部