У меня есть CTE как ниже (удаленная логика)
;with cte_a as
(
select ID, Count(AnotherID) as Counter
from Table_A
group by ID
)
и определяемая пользователем функция, которая берет идентификатор в качестве входа и возвращает таблицу.
udf_GetRelatedItemIds(@Id)
Я хотел просто считать количество связанных идентификаторов объекта возвращенным из определяемой пользователем функции для каждого идентификатора в cte_a.
Я пробовал что-то как ниже, но это не работало
;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
SELECT
T.ID,
(SELECT COUNT(RelatedId) FROM udf_GetRelatedItemIds(T.ID)) AS cnt
FROM
Table_A T
GROUP BY
T.ID
ВНИМАНИЕ !!! Производительность здесь, вероятно, будет ужасной, так как эту функцию нужно запускать один раз для каждой строки в Table_A. Если вы можете воссоздать логику своей функции в представлении, которое дает вам результаты для всех идентификаторов, вам, вероятно, будет лучше.