2010-10-21 34 views
1

我認爲這一定很明顯,但我無法弄清楚。在表格和連續結果的每個記錄上調用TVF

說有一個表tblData用柱ID和接受一個ID作爲參數表值函數(_tvf)。我需要tblData中所有ID的結果。

但是:

SELECT * FROM tblData data 
INNER JOIN dbo._tvf(data.ID) AS tvfData 
    ON data.ID = tvfData.ID 

給我一個錯誤:The multi-part identifier "data.ID" could not be bound

什麼是通過所有的ID這個TVF和CONCAT結果的正確方法是什麼?

感謝

回答

5

我想你可能需要使用CROSS APPLY而不是內部聯接位置:

SELECT * 
FROM dbo.tblData data 
CROSS APPLY dbo._tvf(data.ID) AS tvfData 

這將調用基表的每個data.ID的TVF功能,結果加盟基表的列。

看到這裏ressources:

+0

這樣的作品,謝謝:) – 2010-10-21 12:11:41

+0

不幸的是我得到了「最大遞歸100之前已經被耗盡語句完成「錯誤。因爲這是另一個問題,也許你也可以幫助我。 http://stackoverflow.com/questions/3986240/multipart-identifier-could-not-be-bound – 2010-10-21 12:43:19

+1

我必須應用OPTION(MAXRECURSION 0)到調用ITVF的Selct語句的末尾。現在它工作,再次感謝。 – 2010-10-21 13:15:09