2013-05-07 150 views
3

我不時擺弄SQL Server,並且出現類似於 Can't use a window function on an aggregate的錯誤。這是令人沮喪的,因爲我有SQL Server 2008,我知道2012提供了更好的窗口函數功能,並且我使用了它們很多。然而,我不時做些類似於在SQL Server中嵌套窗口函數

select me.patid 
     ,COUNT(*) as eligibilityGapsNo 
     ,COUNT(*) over(partition by count(*)) 
from memberEligibility as me 
group by me.patid 

並且這工作正常。我想是因爲我已經由me.patid分組了,但是有沒有人有更清晰的想法,可以像這樣嵌套窗口函數?

回答

2

這裏沒有嵌套窗口函數。您正在使用窗口函數count(*) over嵌套聚合函數count(*)

您可以在窗口函數中嵌套聚合函數。而且,我做到了。不過,我覺得說得清楚寫這作爲一個子查詢,因爲嵌套聚合函數只是「看起來不正確」我說:

select patid, eg, count(*) over (partition by egcnt) 
from (select me.patid, count(*) as egcnt 
     from memberEligibility me 
     group by me.patid 
    ) t 
+0

總是很高興看到聽到別人的觀點 – wootscootinboogie 2013-05-07 14:28:38