2013-04-10 5 views
1

간단한 CASE 식의 구문은 다음과 같이 Microsoft 설명서에 나와 있습니다.SQL Server case input_expression

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 

고마워요!

EDS가

+0

예를. 'Case a 1 then 2 else else'가 작동합니다. – cha

+0

부울 변수를 사용하여 input_expression의 결과를 저장할 수 있습니다. –

답변

3

input_expressionNULL, 수없는 단 하나의 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 
+0

완벽하지는 않지만 부차적 인 부분이 잘 작동한다고 생각합니다. 도와 줘서 고마워, 데이미언. – Eds

관련 문제