2011-03-24 4 views
2

나는 Contribution Margin을 계산하는 계산 된 필드가있는 SQL 쿼리를 사용합니다. 나는 그것을 표시하고 수학은 잘 작동합니다. 내가 가지고있는 문제는 기부 여백이 0.25보다 낮은 레코드 만 표시하기를 원한다는 것입니다. where 절에서 use column alias를 사용할 수 없다는 것을 알고 있습니다. 이 일을하는 가장 좋은 방법이 무엇인지 궁금 해서요. 또한 Visual Studio를 사용하고 있습니다. (하위 쿼리로 원래 쿼리를 사용하지 않는 한)SQL 쿼리에서 계산 된 필드 사용

답변

4
SELECT * 
FROM (
     SELECT m.*, 
       compute_margin(field1, field2) AS margin 
     FROM mytable m 
     ) q 
WHERE margin < 0.25 
1

당신은 열 별칭을 사용할 수 있지만, 당신은 당신이 계산 된 값을 정의하는 데 사용하는 표현을 사용할 수 있습니다. 쿼리 인 경우

예를 들어, 지금이 :

select 
    contribution_amount, 
    total_amount, 
    contribution_amount/total_amount as contribution_margin 

from records 

당신은이 작업을 수행 할 수 있습니다 :

select 
    contribution_amount, 
    total_amount, 
    contribution_amount/total_amount as contribution_margin 

from records 

where contribution_amount/total_amount < 0.25 

또는이 :

select * from 
(
    select 
     contribution_amount, 
     total_amount, 
     contribution_amount/total_amount as contribution_margin 

    from records 
) 
where contribution_margin < 0.25 

(개인적으로이 내가 첫 번째 버전을 찾을 수 바람직하기는하지만 모두 동일하게 수행 할 것임)

0

할 수 있습니다 중 하나

  • 반복에서 계산 절
  • 이의 별명을 지정 어디에서 절
  • 이 (가) 테이블 식 쿼리 (CTE 또는 파생 테이블을) 랩 곳과 별칭을 사용 cross apply.

는 (당신은 또한 유사한 CTE를 사용할 수 있습니다), Quassnoi가 게시 된 솔루션 중 하나를 마지막 방법

select doubled_schema_id,* 
from sys.objects 
cross apply (select schema_id*2 as doubled_schema_id) c 
where doubled_schema_id= 2 
0

두 가지 방법의 예를 제공합니다

또는 WHERE compute_margin(field1, field2) < 0.25

관련 문제