在SQL Server中嵌套窗口函数

时间:2013-05-07 13:57:59

标签: sql sql-server tsql window-functions

我不时地在使用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进行分组了,但是有没有人更清楚你何时可以嵌套这样的窗函数?

1 个答案:

答案 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