Jam*_*all 3 sql-server window-functions sql-server-2014
基于我发现的一些有趣语法的快速问题。我有一个包含这些列的表:
ID INT,
DimBuyDetails_Id INT,
WeekOfBuy INT,
Spots INT,
Retired BIT
Run Code Online (Sandbox Code Playgroud)
如果我运行此查询,我将得到ROW_NUMBER()而不是COUNT()
SELECT *
, COUNT(ID) OVER (
PARTITION BY DimBuyDetails_Id, WeekOfBuy
ORDER BY ID --<
) AS ct
FROM Core.FactBuysPerWeek
Run Code Online (Sandbox Code Playgroud)
但是,如果我更改该ORDER BY条款,我会得到COUNT()
SELECT *
, COUNT(ID) OVER (
PARTITION BY DimBuyDetails_Id, WeekOfBuy
ORDER BY DimBuyDetails_Id, WeekOfBuy --<Changed Order by here
) AS ct
FROM Core.FactBuysPerWeek
Run Code Online (Sandbox Code Playgroud)
有谁知道是什么原因造成的?
如果我运行此查询,我将得到 ROW_NUMBER() 而不是 COUNT()
如果未指定 ORDER BY,则整个分区将用于窗口框架。这仅适用于不需要 ORDER BY 子句的函数。如果未指定 ROWS/RANGE 但指定了 ORDER BY,则使用 RANGE UNBOUNDED PRECEDING AND CURRENT ROW 作为窗口框架的默认值。这仅适用于可以接受可选 ROWS/RANGE 规范的函数。
| 归档时间: |
|
| 查看次数: |
3332 次 |
| 最近记录: |