首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在条件IN子句中使用CASE

在条件IN子句中使用CASE
EN

Stack Overflow用户
提问于 2015-10-21 19:41:05
回答 1查看 49关注 0票数 0

我有一个失败的声明:

代码语言:javascript
复制
select 
    value_1, value_2
from 
    zt_Report
where 
    Division_CD in CASE WHEN @Division ='(ALL EPCD)' THEN ('Epoxy', 'MDP', 'OTG', 'PSR') ELSE @Division END 
    and [Business_CD] like CASE WHEN @Business='(All)' THEN '%' ELSE @Business END 
    and [Plant_TX] like CASE WHEN @Plant='(All)' THEN '%' ELSE @Plant+'%' END 

在线上得到一个错误:

代码语言:javascript
复制
Where Division_CD in CASE WHEN @Division ='(ALL EPCD)' THEN ('Epoxy', 'MDP', 'OTG', 'PSR') ELSE @Division END

本质上需要发生的是,当除法参数被传递到(ALL EPCD)时,那么WHERE子句将只允许除法'Epoxy', 'MDP', 'OTG', 'PSR',否则它应该在这个除数上进行准确的过滤,即。将Epoxy传递到除法处将WHERE设置为只定位Epoxy分区

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-21 19:44:52

这不是case的工作方式。它返回一个标量值,而不是一个列表。所以,你想做这样的事情:

代码语言:javascript
复制
Where (@Division = '(ALL EPCD)' and Division_CD IN ('Epoxy', 'MDP', 'OTG', 'PSR') or 
       Division_CD = @Division
      ) and 
      (@Business = '(All)' or Business_CD = @Business) and
      (@Plant = '(All)' or Plant_TX like @Plant + '%') 

您的逻辑是以非常奇怪(且不兼容)的方式混合相等、likecase

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33267840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档