在桌面的每个记录上调用TVF并获得结果

时间:2010-10-21 11:30:32

标签: sql-server sql-server-2005 user-defined-functions

我认为这一定是显而易见的,但我无法弄明白。

假设有一个表tblData,其中包含一列ID和一个以_tvf为参数的表值函数(ID)。我需要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并将结果连接起来的正确方法是什么?

由于

1 个答案:

答案 0 :(得分:5)

我认为你可能需要在这里使用CROSS APPLY而不是内连接:

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

这将为基表的每个data.ID调用TVF函数,并将结果连接到基表的列。

请参阅此处的资源: