在表格的每条记录上调用 TVF 并连接结果
Posted
技术标签:
【中文标题】在表格的每条记录上调用 TVF 并连接结果【英文标题】:Call TVF on every record of a table and concat results 【发布时间】:2010-10-21 11:30:32 【问题描述】:我认为这一定很明显,但我想不通。
假设有一个表 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】:我认为您可能需要在这里使用 CROSS APPLY 而不是内部联接:
SELECT *
FROM dbo.tblData data
CROSS APPLY dbo._tvf(data.ID) AS tvfData
这将为基表的每个data.ID
调用 TVF 函数,并将结果连接到基表的列。
在此处查看资源:
Using CROSS APPLY in SQL Server Understanding APPLY clause in SQL Server Using T-SQL CROSS APPLY and OUTER APPLY【讨论】:
不幸的是,我收到“在语句完成之前已用尽最大递归 100”错误。因为这是另一个问题,也许你也可以在那里帮助我。 ***.com/questions/3986240/… 我必须在调用 ITVF 的选择语句的末尾应用一个 OPTION (MAXRECURSION 0)。现在可以了,再次感谢。以上是关于在表格的每条记录上调用 TVF 并连接结果的主要内容,如果未能解决你的问题,请参考以下文章