2013-05-16 56 views
0

我試圖加入到內部查詢中,該查詢使結果由另一個表中的值進行過濾,因此我可以選擇最上面的結果並使用值在我的主選擇語句中多次,但我得到的錯誤如下:引用內部聯接中的不同表中的一列選擇

無法綁定多部分標識符「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 .... 

我怎樣才能得到這個工作,所以我可以從我的查詢中使用的值(即我目前正在試圖加入)在計算在多個領域,而不重複?

回答

2

的最簡單的方法是使用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它應該是'min',我假設順序是desc。我的答案已更新。 – Taryn

0

你需要跨越適用於派生表

... 

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應用相關聯的列是正確的結構,無論如何,這是一個「每個東西TOP 1」你在做什麼,

+0

其標記的SQL Server 2000,它有'CROSS APPLY'? – Taryn

+0

@bluefeet:我從來沒有考慮過這些日子。不應該允許 – gbn