【发布时间】:2020-01-09 15:54:39
【问题描述】:
我正在使用 Sybase Adaptive Server Enterprise(版本 12.5.0.3)。尝试使用Row_number() OVER (Partition by columnname order by columnname)。当我执行查询时,它会抛出一个异常,指出 OVER 附近的语法不正确。我已经为 sybase 数据库搜索了正确的 row_number() 语法,但语法没有任何问题。我猜正在使用的 Sybase 版本不支持row_number() OVER。我什至尝试过dense_rank() OVER,但遇到了同样的错误。
我想知道这是真的语法问题还是因为Sybase的低版本不支持关键字?
如果问题出在版本上,那么对于 sybase 数据库,row_number OVER 和 dense_rank() OVER 是否有任何替代方案。
我的查询:
select cr.firstname, cr.lastname, cr.dob,cr.phone,
row_number() over (patition by cr.dob order by createddate) "rank"
from ff.CrossReferenceTable cr
错误信息:
Server Message: Number 156, Severity 15
Server 'MyServer', Line 1:
Incorrect syntax near the keyword 'over'.
【问题讨论】:
-
SQL Advantage 目前是版本 11,我认为 SQL Anywhere 没有版本 12.5.1,因此您可能正在使用 Sybase ASE 或 Sybase IQ。您能否说明您使用的是什么 DBMS?
-
我已经执行了下面的查询并找到了输出。
Select @@version输出为 "Adaptive Server Enterprise/12.5.0.3/EBF 10690 IR/P/RS6000/AIX 4.3.3/rel12503/1915/32-bit/FBO/Thu Jan 23 12:19:08 2003" -
Sybase ASE 12.5 不支持
row_number或over。这是使用临时表的人建议的row_number的解决方法。 stackoverflow.com/questions/16608469/… -
另外,这里是文档链接:infocenter.sybase.com/help/index.jsp?topic=/… 您可能会找到Transact SQL 用户指南、参考手册:构建块 和参考手册:命令有助于确定支持哪些命令。
-
谢谢迈克尔。此信息很有帮助。
标签: sybase sap-ase window-functions