T-SQL调用table函数传递多个值并聚合结果

T-SQL call table function passing multiple values and aggregate results

我有一个 Table 函数,它 returns 一组基于参数的行,如下例所示:

CREATE FUNCTION fn_get_records
(@PARENTID INT)
RETURNS  @returnTable TABLE 
(
    -- columns returned by the function
    Id INT NOT NULL,
    Parent_Id INT NOT NULL,
    Name VARCHAR(255) NOT NULL
)
AS
BEGIN
   -- This select returns data
   INSERT INTO @returnTable (Id, ParentId, Name)
   SELECT Id, ParentId, Name FROM [whatever] where Parent_Id = @PARENTID 
RETURN
END

我有另一个 table,其中包含 "Parent Ids" 的列表,我应该为匹配特定查询的每个 Parent_Id 调用上一个函数并汇总所有结果。

使用类似

的方法检索父 ID
SELECT Parent_Id 
FROM Parent_Records
WHERE Country = 'USA'

这个selectreturns,比如4行。对于每一行,我必须执行我的函数 fn_get_records 并将所有结果汇总到一个视图或另一个函数中。

这可能吗? 当然我不想使用游标,因为我需要一些快速的东西

仅供参考:更高效的 TVF 应该是单个语句

CREATE FUNCTION fn_get_records (@PARENTID INT)
RETURNS TABLE 
AS
RETURN (
   SELECT Id, ParentId, Name FROM [whatever] where Parent_Id = @PARENTID 
)
END

然后您可以通过 CROSS Apply 调用您的函数。例如:

Select A.*
      ,B.*
 From  YourTable A
 Cross Apply dbo.fn_get_records (A.SomeIntValue) B