2017-11-24 1 views
0

나는 원하는 그림을 잘 잡아 당기는 스크립트를 가지고 있습니다. 이제 다른 계산 된 필드에 의해 주어진 숫자를 곱해야합니다 (필드 x를 호출 할 때 9 '명령문이있는 case 문). 그런 다음 0.74를 곱합니다.SUM 및 계산 된 필드에 곱하기

나는이 모든 ... 어떤 아이디어가 동작하지 않습니다 ... 스크립트

Case 
    when Left([dbo].[Table1].FIELD 1,3) = 'NEW' and [Field 2] = 'Live' 
Then 
    (SELECT distinct[dbo].[Table2].[Field a] 
    FROM [MY_DATABASE].[dbo].[Table2] 

right Join [dbo].[Table 3] 
    on ([dbo].[Table2].[Field b]=[dbo].[Table 3].[Field 1]) 

Where [dbo].[Table2].[Field c] = 
    (Select 
     [dbo].[Table 3].[Field1] 
      From [dbo].[Table 3] 
       Where [dbo].[Table 3].[Field4] = @parameter 
        and [Field5] = '7') 
         and [dbo].[Table2].[Field D]= @Parameter 
          and [dbo].[Table2].[Field E]= '07') 
    ELSE 0 
    END 

    As [Named Field] 
+0

https://stackoverflow.com/help/how-to-ask 좋은 시작입니다. – jarlh

+0

_Column_, not field. – jarlh

답변

2

하나 개의 옵션 아래 여기에 공통 테이블 표현식이 될 것입니다.

나는 당신의 선택을 cte로 감싸고, 그것을 선택하고 더 낮은 수준에서 더 이상의 계산을 수행 할 것을 제안한다.

;with cte as ( 
    your original select query 
) 
    select * 
    ,  [named field] * [field x] as [calculated answer] 
    from cte 

이렇게하면 계산을 반복해서하지 않아도됩니다. cte의 주변에는 성능 문제가 있지만 이러한 상황에서는 도움이 될 수 있습니다. 나는 당신의 데이터를 테스트하고 얼마나 많은 히트를했는지를 볼 것입니다.

관련 문제