Sql server 用户定义函数返回值上的t-sql计数
我有一个CTE如下(逻辑删除) 以及一个用户定义的函数,该函数将Id作为输入并返回一个表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
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