我不时地在使用SQL Server,我得到的错误类似于
Can't use a window function on an aggregate
。这是令人沮丧的,因为我有SQL Server 2008,我知道2012年提供了更好的窗口功能,我使用它们很多。但是,我不时会做类似
select me.patid
,COUNT(*) as eligibilityGapsNo
,COUNT(*) over(partition by count(*))
from memberEligibility as me
group by me.patid
这很好用。我假设是因为我已经在me.patid进行分组了,但是有没有人更清楚你何时可以嵌套这样的窗函数?
答案 0 :(得分:2)
这里没有嵌套窗口函数。您正在使用窗口函数count(*)
嵌套聚合函数count(*) over
。
您可以在窗口函数中嵌套聚合函数。而且,我这样做。但是,我发现将它写为子查询更清楚,因为嵌套聚合函数对我来说“看起来不对”:
select patid, eg, count(*) over (partition by egcnt)
from (select me.patid, count(*) as egcnt
from memberEligibility me
group by me.patid
) t