t-sql РАССЧИТЫВАЮТ на возвращенное значение определяемой пользователем функции

У меня есть 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

Предложите решение.

1
задан Tom H 13 July 2010 в 15:12
поделиться

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
2
ответ дан 2 September 2019 в 23:12
поделиться
SELECT
    T.ID,
    (SELECT COUNT(RelatedId) FROM udf_GetRelatedItemIds(T.ID)) AS cnt
FROM
    Table_A T
GROUP BY
    T.ID

ВНИМАНИЕ !!! Производительность здесь, вероятно, будет ужасной, так как эту функцию нужно запускать один раз для каждой строки в Table_A. Если вы можете воссоздать логику своей функции в представлении, которое дает вам результаты для всех идентификаторов, вам, вероятно, будет лучше.

0
ответ дан 2 September 2019 в 23:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: