sql参数casewhen

select  

detail.sales_organization as 销售组织

,detail.customer_group as 客户名称缩写

from dvm_sls_cytb_detail detail

where 1=1 

${if(len(kh2)=0&&len(khjt)=0,"",if(len(kh2)>0,"and detail.customer_group in ('"+kh2+"')","and detail.customer_group in ('"+khjt+"')"))}

如何将where条件后面的参数,放在select后面,使用case when 客户名称缩写选择了几个显示几个,另外的显示为其他,未选择时,展示全部。大佬救急...请问这种如何写?

image.png

柒年呀 发布于 2021-11-16 09:54 (编辑于 2021-11-16 11:53)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
北纬六十六度Lv4中级互助
发布于2021-11-16 10:59

参数是可以直接放到select 后面的,根据参数可以case when ,直接写就行

  • 柒年呀 柒年呀(提问者) 比如 我选了两个客户,这两个客户的数据客户字段不变,其他的客户要变成其他,应该怎样写条件?
    2021-11-16 11:25 
  • 北纬六十六度 北纬六十六度 回复 柒年呀(提问者) select case when 客户参数=\'客户A\' or 客户参数=\'客户B\' then 客户参数 else \'其他\' end
    2021-11-16 11:30 
  • 北纬六十六度 北纬六十六度 回复 柒年呀(提问者) select case when 客户字段=客户参数1 or 客户字段=客户参数2 then 客户字段 else \'其他\' end
    2021-11-16 11:31 
最佳回答
0
yzm119464Lv3初级互助
发布于2021-11-16 10:05

你是想放在select里面是吗?

参数本身就是作为筛选数据用的,放到where后面才是合理的,看你的描述,现在where后面是可以满足你的需求的

最佳回答
0
黄源Lv6中级互助
发布于2021-11-16 14:33(编辑于 2021-11-16 14:34)

存储过程处理吧,直接sql比较复杂,你可以试试将参数通过数组拼成when xx=xx then xx 然后转成字符串 加上 else aa end  

数量少还好,多了麻烦得要死

  • 4关注人数
  • 452浏览人数
  • 最后回答于:2021-11-16 14:34
    请选择关闭问题的原因
    确定 取消
    返回顶部