【问题标题】:Using IN clause in THEN portion of a CASE expression在 CASE 表达式的 THEN 部分使用 IN 子句
【发布时间】:2020-02-28 06:58:18
【问题描述】:

我只想在我的查询中包含每个地区的特定客户组。 我正在使用以下显示错误的查询。

select sum(salesvalue)
from sales 
where (case when Region = 'TN' then CustomerGroup in (68,75,78,69,51,77,66)
case when Region= 'KL' then CustomerGroup in (77,01,68,51,69,78) end)

我怎样才能做到这一点?

【问题讨论】:

    标签: sql-server case where-clause


    【解决方案1】:

    你可以在没有case 表达式的情况下做到这一点:

    WHERE (Region = 'TN' AND CustomerGroup in (68,75,78,69,51,77,66))
    OR    (Region= 'KL'  AND CustomerGroup in (77,01,68,51,69,78))
    

    这产生了一个简单的条件,并且可以说更容易阅读。

    【讨论】:

      【解决方案2】:

      您不能在Where 子句中使用CASE WHEN END

      只需使用 AND/OR 之类的逻辑即可。

      If the column = value And the column IN the list of values.

      select sum(salesvalue)
      from sales 
      where (Region = 'TN' AND CustomerGroup in (68,75,78,69,51,77,66))
             OR (Region= 'KL' AND CustomerGroup in (77,01,68,51,69,78))
      

      【讨论】:

      • @vicky 这能回答你的问题吗?如果您需要任何帮助,请告诉我
      猜你喜欢
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多