2011-12-14 3 views
3

몇 개의 필드가있는 선택 쿼리가 있습니다. "FieldA"는 10 줄 정도의 Case 문입니다. 이제는 같은 Case 문에 상수를 더한 "FieldB"를 만들어야합니다.동일한 쿼리의 다른 필드에서 계산 된 필드를 사용하는 방법

현재 SQL Server에 대한 지식이있는 경우 Case 문을 두 번 반복해야합니다 (FieldA는 한 번, FieldB는 한 ​​번). 내 코드를 정리하려면 FieldB를 계산할 때 fieldA를 어떻게 사용할 수 있습니까? 패배의 종류에게 개념을

Select 
    Case ... 
     When ... then ... 
     When ... then ... 
     When ... then ... 
    End      as FieldA, 
    FieldA + 1    as FieldB 
From TblSource 

(나는 하나의 옵션은 임시 테이블에 데이터를 덤프하는 것을 알고, 그 임시 테이블을 업데이트 할 수 있지만 :

이상적으로, 내 코드는 다음과 같을 것이다.) '단순화'의

답변

4

이처럼 수행

;WITH YourCTE AS 
(
Select 
    Case ... 
     When ... then ... 
     When ... then ... 
     When ... then ... 
    End      as FieldA 
From TblSource 
) 
SELECT FieldA, FieldA + 1 AS FieldB, FieldA + 2 AS FieldC .... 
FROM YourCTE 
+0

그것은 작동합니다! 내가 기대했던만큼 간단하지는 않습니다. (기본적으로 1 Select 문을 2로 나눕니다.)하지만 몇 가지 장점이 있습니다. – PowerUser

+2

유일한 해결책이 궁금한가요? –

2

이 을 @Johnny_D항상 다음과 같은 것을 사용할 수 있습니다.

Select tbl.*,tbl.FieldA+1 as FieldB, tbl.FieldA+2 as FieldC from 
(
Select 
    Case ... 
     When ... then ... 
     When ... then ... 
     When ... then ... 
    End as FieldA 
From TblSource 
) as tbl 
+0

그게 너무 작동합니다. 그리고 (상대적으로 모호한)'; '명령을 사용하면 설명하기가 더 쉽습니다. – PowerUser

관련 문제