【发布时间】:2010-12-08 09:59:17
【问题描述】:
Oracle 奇怪错误:意外错误 ORA-00937:不是单组组函数
从 VB6 应用程序执行,使用 Adodb,使用 Provider=MSDAORA.1
查询:
Select Max(SNO) as SRNO
From Orders
Where OrderDate = '30-Jan-2009'
错误:
意外错误 ORA-00937:不是单组组函数
据我所知,仅当查询包含聚合函数时才应触发此错误,而选定的列不在聚合函数中,那么这些列必须在 Group By 子句中。
现在在我的查询中,没有选择额外的列。
更奇怪的:
如果在 oracle SQL Plus 中执行相同的查询,它会起作用。但如果从 VB6 执行,则会出现上述错误。任何提示
我使用 rownum 和内部查询解决了 MAX 问题。
select SRNO
from (Select SNO as SRNO
From Orders
Where OrderDate = '08/Dec/2009'
order by SNO desc )
where RowNum = 1
【问题讨论】:
-
额外提示,完全不相关,但很重要:在与日期列进行比较时使用日期。所以最好使用
date '2009-01-30'或to_date('30-Jan-2009','dd-Mon-yyyy','nls_date_language=american'),而不是'30-Jan-2009'。