2013-05-07 148 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