2010-07-08 90 views
1

我的CTE如下(邏輯移除)噸-SQL COUNT返回值

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

和用戶定義的函數,它接受一個I​​d作爲輸入,並返回一個表。

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 

請提出一個解決方案。

回答

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 
+0

對我來說不是那麼無聊:)謝謝Tahbaza! – stackoverflowuser 2010-07-08 18:32:36

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提供結果,則可能會更好。