SQL Server语言 - 在前面的无界行之间分区不起作用?



根据文档:

无界前置适用于:SQL Server 2012 (11.x( 至 SQL 服务器 2017。

指定窗口从分区的第一行开始。 无界前置只能指定为窗口起点。

那么,当使用它时,为什么:

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

我仍然得到滚动平均值。

我知道上面的构造应该让我等同于Select TOP(3) avg(qty)...,至少根据文档。

我错过了什么吗?

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

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

简单地说是"获取从窗口分区开始到当前行的所有行以及另外 2 行"。不言而喻的部分是"当前行",无论如何它总是存在的。

感谢Damien_the_Unbeliever陈述显而易见的事情,这让我一直在思考。

最新更新