在禁用分区功能的 SQL 中使用分区上的 Row_number
Posted
技术标签:
【中文标题】在禁用分区功能的 SQL 中使用分区上的 Row_number【英文标题】:Using Row_number over partition by in SQL with Partitioning Feature Disabled 【发布时间】:2013-06-19 16:17:28 【问题描述】:我想使用ROW_NUMBER() OVER (PARTITION BY SOME_COLUMN_NAME Order By SOME_COLUMN_NAME)
在选择 SQL。
我同时使用 SQLServer 和 Oracle 数据库。
这是否需要在数据库上启用“分区功能”?
更新:- 我正在使用多个版本:SQL Server 2005、SQL Server 2008 R2、Oracle 11g
【问题讨论】:
您是否尝试在您的选择中使用row_number()
?它奏效了吗?你收到错误了吗?
对于 SQL Server:不!甚至没有这样的选项可以配置。即使对于 Oracle,我也不认为它的“分区功能”与 ROW_NUMBER
@bluefeet 目前它在我的本地完美运行,但我不确定我的客户端数据库是否启用了分区功能。
@harrybvp 在 Oracle 中有一个叫做 Partitioning feature
的东西可以被禁用或启用,但它与 ROW_NUMBER() OVER (PARTITION BY)
无关
@Nenand 肯定有 - OP 只是混淆了 PARTITION BY 和表分区,这当然是非常不同的事情。
【参考方案1】:
“Partitioning Feature”与OLAP函数完全不同。
所以,答案是“是”,您可以在禁用分区功能的情况下使用“Row_Number”。
【讨论】:
正确:“PARTITION BY Divides the query result set into partitions.” 正确的 (ANSI SQL) 术语是“窗口函数”而不是“OLAP 函数”(OLAP 函数是 Microsoft 术语,分析函数是 Oracle 术语)。以上是关于在禁用分区功能的 SQL 中使用分区上的 Row_number的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server:row_number 分区不重置计数器