SQL Server-使用未绑定的行之间的ROWS进行过度分区不起作用?

时间:2018-09-19 01:29:05

标签: sql-server sql-server-2012 windowed

根据documentation

  

未绑定的前提适用于:通过SQL的SQL Server 2012(11.x)   Server 2017。

     

指定窗口从分区的第一行开始。   只能将“无界优先”指定为窗口起点。

使用此功能时,怎么会这样:

avg(Qty) over (partition by [Name] ORDER BY [Period] desc ROWS BETWEEN UNBOUNDED PRECEDING AND 2 FOLLOWING

我仍然可以获得滚动平均值。

我了解,至少根据文档所述,以上构造应使我等效于Select TOP(3) avg(qty)...

我想念什么吗?

1 个答案:

答案 0 :(得分:0)

经过研究,测试和分析了可用的文档,需要记住的一件事是我的理解还不完整:在任何配置中使用ROWS时,参考点始终是当前行。所以我的查询:

avg(Qty) over (partition by [Name] 
    ORDER BY [Period] desc ROWS BETWEEN UNBOUNDED PRECEDING AND 2 FOLLOWING)

的简单含义是“使从窗口分区的开始到当前行的所有行以及另外2行”。不言而喻的部分是“当前行”,始终存在。

感谢Damien_the_Unbeliever陈述了显而易见的内容,这让我不断思考。