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

Tim*_*ter 1 sql-server sql-server-2005 user-defined-functions

我认为这一定是显而易见的,但我无法弄清楚.

假设有一个tblData带有列ID的表和一个_tvf带有IDas参数的table-valued-function().我需要所有ID的结果tblData.

但:

SELECT * FROM tblData data 
INNER JOIN dbo._tvf(data.ID) AS tvfData
   ON data.ID = tvfData.ID
Run Code Online (Sandbox Code Playgroud)

给我一个错误: The multi-part identifier "data.ID" could not be bound

将所有ID传递给此TVF并将结果连接起来的正确方法是什么?

谢谢

mar*_*c_s 5

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

SELECT * 
FROM dbo.tblData data 
CROSS APPLY dbo._tvf(data.ID) AS tvfData
Run Code Online (Sandbox Code Playgroud)

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

请参阅此处的资源: