具有多个值的CASE IN语句

mam*_*esh 40 sql sql-server sql-server-2005

有没有办法用IN子句制作CASE语句?

SELECT
CASE c.Number
IN ('1121231','31242323') THEN 1
IN ('234523','2342423') THEN 2
END AS Test
FROM tblClient c
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 86

是.您需要使用"搜索"表单而不是CASE表达式的"简单"形式

SELECT CASE
         WHEN c.Number IN ( '1121231', '31242323' ) THEN 1
         WHEN c.Number IN ( '234523', '2342423' ) THEN 2
       END AS Test
FROM   tblClient c  
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 8

您可以从多个匹配中返回相同的值:

SELECT
  CASE c.Number
    WHEN '1121231' THEN 1
    WHEN '31242323' THEN 1
    WHEN '234523' THEN 2
    WHEN '2342423' THEN 2
  END AS Test
FROM tblClient c
Run Code Online (Sandbox Code Playgroud)

这可能会导致与Martins建议相同的执行计划,因此更多的是您想要如何编写它.

  • @t-clausen.dk:如果您只想完全按照说明回答问题,那么唯一可能的答案是“否”,这不是很有建设性。 (3认同)