1

简单CASE表达式的语法在 Microsoft 文档中如下所示;

CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END 

是否可以在不第二次重写查询的情况下执行以下input_expression操作?

CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     [ ELSE **input_expression** ] 
END 

谢谢!

编辑

4

1 回答 1

3

如果 input_expression不能NULL并且只有一个WHEN分支,那么您可以编写:

COALESCE(NULLIF(input_expression,when_expression),result_expression)

否则,如果 的复杂性input_expression太大,请考虑将其计算移到子查询中。所以,而不是:

SELECT
CASE input_expression 
     WHEN when_expression THEN result_expression [ ...n ] 
     ELSE input_expression 
END,
--Other columns
FROM
   --Rest of query

你将会拥有:

SELECT
CASE ie
     WHEN when_expression THEN result_expression [ ...n ] 
     ELSE ie
END,
--Other columns
FROM
   (
   SELECT
      input_expression as ie,
      --Other columns
   FROM
      --Rest of query
   ) t
于 2013-04-10T06:54:20.160 回答