Sql server 结果表达式中的IN语句中的CASE-THEN表达式

Sql server 结果表达式中的IN语句中的CASE-THEN表达式,sql-server,tsql,sql,Sql Server,Tsql,Sql,是否可以在的情况下使用。然后 WHERE record.field = CASE WHEN @flag = 1 THEN a WHEN @flag = 2 THEN IN (b, c) END 或者如何重写这种情况?试试: WHERE (@flag = 1 AND record.field = a ) OR (@flag = 2 AND record.field IN (b, c)) 最好尝试加入值并使用索引: D

是否可以在的情况下使用。然后

WHERE
   record.field =
      CASE
          WHEN @flag = 1 THEN a
          WHEN @flag = 2 THEN IN (b, c)
      END
或者如何重写这种情况?

试试:

WHERE (@flag = 1 AND record.field = a )
    OR (@flag = 2 AND record.field IN (b, c))
最好尝试加入值并使用索引:

DECLARE @Table (ValueOf  int)
INSERT INTO @Table ((ValueOf)
    SELECT a WHERE @flag = 1
    UNION SELECT b WHERE @flag = 2
    UNION SELECT c WHERE @flag = 2

SELECT
    ....
    FROM ...           x
    INNER JOIN @Table  t ON x...=t.ValueOf  
对不起,没有:

WHERE
    (@flag = 1 AND record.field = a)
    OR
    (@flag = 2 AND record.field IN (b, c))