t-sql COUNT для определенной пользователем возвращаемой функции - PullRequest
1 голос
/ 08 июля 2010

У меня CTE, как показано ниже (логика удалена)

;with cte_a as
(
    select ID, Count(AnotherID) as Counter
    from Table_A
    group by ID
)

и пользовательская функция, которая принимает 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

Пожалуйста, предложите решение.

Ответы [ 2 ]

2 голосов
/ 08 июля 2010

А как же

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
0 голосов
/ 08 июля 2010
SELECT
    T.ID,
    (SELECT COUNT(RelatedId) FROM udf_GetRelatedItemIds(T.ID)) AS cnt
FROM
    Table_A T
GROUP BY
    T.ID

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...