它给出了一个正在运行的总数(此功能直到2012版才在SQL Server中实现。)
在
ORDER BY定义了窗口与被聚合
UNBOUNDED PRECEDING和
CURRENT ROW作为未指定时的缺省值。SQL
Server默认使用性能较差的
RANGE选项,而不是
ROWS。
对于关系,它们具有不同的语义,因为该
RANGE版本的窗口不仅包括当前行(和先前的行),而且还包括与当前行具有相同值的任何其他绑定行
a。在下面的结果中,每一行所计数的行数可以看出这一点。
SELECt a, b, COUNT(*) OVER (ORDER BY a ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS [Rows], COUNT(*) OVER (ORDER BY a RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS [Range], COUNT(*) OVER() AS [Over()] FROM t;
退货
a b Rows Range Over()-------- -------- ----------- ----------- -----------NULL NULL 1412NULL NULL 2412NULL NULL 3412NULL NULL 4412a b 5712a b 6712a b 7712c d 811 12c d 911 12c d 10 11 12c d 11 11 12e NULL 12 12 12
为了达到结果是你期望得到省略 两者 的
PARTITION BY和
ORDER BY,并使用一个空的
OVER()条款(如上所示)。



