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