我的CTE如下(逻辑删除)
;with cte_a as
(
select ID, Count(AnotherID) as Counter
from Table_A
group by ID
)
和用户定义的函数,它将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
请提出解决方案。
答案 0 :(得分:2)
怎么样?
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
答案 1 :(得分:0)
SELECT
T.ID,
(SELECT COUNT(RelatedId) FROM udf_GetRelatedItemIds(T.ID)) AS cnt
FROM
Table_A T
GROUP BY
T.ID
警告!!! 强> 这里的性能可能很糟糕,因为它需要为Table_A中的每一行运行一次该函数。如果您可以在视图中重新创建功能逻辑,该视图可以为您提供所有ID的结果,那么您可能会感觉更好。