Sql server 用户定义函数返回值上的t-sql计数

Sql server 用户定义函数返回值上的t-sql计数,sql-server,tsql,sql-server-2008,Sql Server,Tsql,Sql Server 2008,我有一个CTE如下(逻辑删除) 以及一个用户定义的函数,该函数将Id作为输入并返回一个表 udf_GetRelatedItemIds(@Id) 我只想计算用户定义函数为cte_a中的每个ID返回的相关项目ID的数量 我试过下面的方法,但没用 ;with cte_a as ( select ID, Count(AnotherID) as Counter from Table_A group by ID ) select ID, Count(select Related

我有一个CTE如下(逻辑删除)

以及一个用户定义的函数,该函数将Id作为输入并返回一个表

udf_GetRelatedItemIds(@Id)
我只想计算用户定义函数为cte_a中的每个ID返回的相关项目ID的数量

我试过下面的方法,但没用

;with cte_a as
(
    select ID, Count(AnotherID) as Counter
    from Table_A
    group by ID
)
select 
ID, 
Count(select RelatedId from udf_GetRelatedItemIds(ID))
from cte_a
请提出一个解决方案。

怎么样

with cte_a as
(
    select ID, Count(AnotherID) as Counter
    from Table_A
    group by ID
)
select 
a.ID, 
(SELECT COUNT(*) FROM udf_GetRelatedItemIds(a.ID)) as IntersectCount
from cte_a a
警告 这里的性能可能非常糟糕,因为它需要为表_A中的每一行运行该函数一次。如果您可以在一个视图中重新创建函数逻辑,从而为所有ID提供结果,您可能会更好

with cte_a as
(
    select ID, Count(AnotherID) as Counter
    from Table_A
    group by ID
)
select 
a.ID, 
(SELECT COUNT(*) FROM udf_GetRelatedItemIds(a.ID)) as IntersectCount
from cte_a a
SELECT
    T.ID,
    (SELECT COUNT(RelatedId) FROM udf_GetRelatedItemIds(T.ID)) AS cnt
FROM
    Table_A T
GROUP BY
    T.ID