2013-05-16 6 views
0

다른 테이블의 값으로 필터링 된 결과를 갖는 내부 쿼리에 조인하려고합니다. 그래서 가장 좋은 결과를 선택하고 거기에 값 내 주요 select 문에서 여러 번,하지만 난 아래와 같은 오류가 발생합니다 : 다중 부분 식별자 "TessSCCall.Call_Num는"구속 할 수없는내부 조인에서 다른 테이블의 열을 선택하십시오.

.

SELECT BestAppointmentOffer AS foo -- I'm using this lots of times in different fields 
     BestAppointmentOffer AS bar -- I'm using this lots of times in different fields 
    .... 
FROM TessSCEmploy 
INNER JOIN TessSCCall on TessSCEmploy.Employ_Num = TessSCCall.Call_Employ_Num 
INNER JOIN 
(
    SELECT TOP 1 dbo.Aqua_Midnight(AppointmentStartTime) 
    AS BestAppointmentOffer, CallNumber 
    FROM AQWEB.[360Tracking].dbo.AppointmentOffers 
    WHERE CallNumber = TessSCCall.Call_Num 
    ORDER BY AppointmentStartTime) AS Appointment 
on TessSCCall.Call_Num = Appointment.CallNumber 
where .... 

가 어떻게이 작업을 얻을 수 있기 때문에 계산에 (I 현재 가입 시도하고 있음) 내 쿼리에서 값을 사용할 수 있습니다

지금까지의 코드는 아래를 참조하십시오 반복하지 않고 여러 필드에서?

답변

2

을 적용 CROSS 필요 가장 쉬운 방법은 CROSS APPLY을 사용하는 것이지만 SQL Server 2000을 사용하고 있으므로이 옵션을 사용할 수 없습니다. 각 약속 시간에 대한 상위 결과를 얻을 집계 함수를 사용할 수 있어야합니다 :

select BestAppointmentOffer AS foo -- I'm using this lots of times in different fields 
     BestAppointmentOffer AS bar -- I'm using this lots of times in different fields 
    .... 
from TessSCEmploy 
inner join TessSCCall 
    on TessSCEmploy.Employ_Num = TessSCCall.Call_Employ_Num 
INNER JOIN 
(
    SELECT min(dbo.Aqua_Midnight(AppointmentStartTime)) AS BestAppointmentOffer, 
    CallNumber 
    FROM AQWEB.[360Tracking].dbo.AppointmentOffers 
    GROUP BY CallNumber 
) AS Appointment 
    on TessSCCall.Call_Num = Appointment.CallNumber 
where .... 
+0

MAX에서 MIN으로 변경해야했지만 지금은 잘 작동합니다. (아마 내가 실수로 잘못 주문했을지도 모르는 것에 따라 나의 잘못다). –

+0

@GeorgeDuckett '분'이어야합니다. 주문을 내린 것으로 추정했습니다. 내 대답이 업데이트되었습니다. – Taryn

0

는 올바른 구조는 "TOP 1 뭔가 당"인 무슨 일을, 어쨌든입니다

... 

TessSCEmploy inner join TessSCCall on TessSCEmploy.Employ_Num = TessSCCall.Call_Employ_Num 

CROSS APPLY 
(SELECT TOP 1 dbo.Aqua_Midnight(AppointmentStartTime) AS BestAppointmentOffer, CallNumber 
FROM AQWEB.[360Tracking].dbo.AppointmentOffers 
WHERE CallNumber = TessSCCall.Call_Num 
ORDER BY AppointmentStartTime) AS Appointment on TessSCCall.Call_Num = Appointment.CallNumber 

where .... 

CROSS이 적용 파생 테이블의 열 상관 관계를

+0

의 태그 SQL 서버 2000, 그것은 'CROSS APPLY'이 있습니까? – Taryn

+0

@bluefeet : 나는 요즘 생각하지 않습니다. 허락을 받아서는 안됩니다. – gbn

관련 문제