2010-11-08 82 views
1

我知道這個問題已經發布了好幾次,但谷歌在1小時後我仍然不能得到這個工作多部分組成的標識符COLUMNNAME無法綁定

SELECT 
    ROW_NUMBER() OVER(ORDER BY x.Year DESC, x.Month) AS ID, 
    x.*, 
    Finance.fGetRates(x.XTimeStamp) 
FROM 
    ( SELECT Client, 
       Month(TimeStamp) As Month, 
       Year(TimeStamp) As Year, 
       Day(TimeStamp) As Day, 
       (dateadd(yy,(Year(TimeStamp)-1900),0) 
       + dateadd(mm,Month(TimeStamp)-1,0) 
       + Day(TimeStamp)-1) AS XTimeStamp, 
       Sum(KwTop) As KwTop, 
       Sum(KwHeap) as KwHeap, 
       Sum(KwLow) As KwLow 
     FROM Ori.vEnergyUnion 
     GROUP BY Year(TimeStamp), Month(TimeStamp),Day(TimeStamp), Client 
    ) x 

LEFT OUTER JOIN Finance.fGetRates(x.XTimeStamp) Fr 
    ON Fr.ValidFrom = x.XTimeStamp 
ORDER BY Fr 

消息4104,級別16,狀態1,行19 多部分標識符 「x.XTimeStamp」無法綁定。

任何幫助將appriciated,謝謝。

+0

從行號,其中提及'x.XTimeStamp'是錯誤消息指什麼? – AakashM 2010-11-08 13:07:37

+0

我認爲這是「內部聯接Finance.fGetRates(x.XTimeStamp)Fr」,因爲我得到這個人標記,如果我雙擊錯誤信息。 – Emil 2010-11-08 13:11:49

回答

3

您無法通過JOIN將參數傳遞給函數。

使用APPLY

SELECT ROW_NUMBER() OVER(ORDER BY x.Year DESC, x.Month) AS ID, 
     x.*, 
     fr.* 
FROM (
     SELECT Client, 
       Month(TimeStamp) As Month, 
       Year(TimeStamp) As Year, 
       Day(TimeStamp) As Day, 
       (dateadd(yy,(Year(TimeStamp)-1900),0) 
       + dateadd(mm,Month(TimeStamp)-1,0) 
       + Day(TimeStamp)-1) AS XTimeStamp, 
       Sum(KwTop) As KwTop, 
       Sum(KwHeap) as KwHeap, 
       Sum(KwLow) As KwLow 
     FROM  Ori.vEnergyUnion 
     GROUP BY 
       Year(TimeStamp), Month(TimeStamp),Day(TimeStamp), Client 
     ) x 
OUTER APPLY 
     (
     SELECT * 
     FROM Finance.fGetRates(x.XTimeStamp) Fr 
     WHERE fr.ValidFrom = x.XTimeStamp 
     ) fr 
相關問題