【问题标题】:ORA-00937: not a single-group group function in 11g,12cORA-00937: 不是 11g、12c 中的单组组函数
【发布时间】:2020-05-10 18:30:36
【问题描述】:

查询1:

select 1 from (select count(*),col1 from table1); 

O/P: 1

版本:11g

查询2:

select * from (select count(*),col1 from table1); 

O/P: 错误:

执行 (1: 32): ORA-00937: 不是单组群函数

版本:11g

因为,我们是同一个版本, 1. 对于Query2,为什么会报错? 2. 没有分组,query1如何返回结果?

在版本 12C 中,两个查询都返回上述错误。

【问题讨论】:

  • 根据您的设置,优化器可能会从查询中删除一些内容,因此您最终可能会在 11 中得到答案,在 12 中得到错误。你肯定知道为什么会出现错误,至少我希望如此。
  • 看起来像一个错误。作为一般规则:对于未聚合的列,聚合需要 GROUP BY 子句,因此 12c 的输出似乎是适当的,因为它会引发错误。

标签: oracle oracle11g oracle12c


【解决方案1】:

您也应该在 11g 中收到查询 1 的错误。你不这样做的事实可能归结为bug 16989676,它影响了 11gR2 并在 12cR1 中得到了修复。您需要一个支持帐户和合同才能查看详细信息 - 我无法在此处复制。可以说它看起来非常相似;但提到你也可能得到错误的结果(例如,使用select count(*) 而不是select 1) - 如果你忽略无效的语法,也就是说,因为真的没有正确的结果。

【讨论】:

    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    相关资源
    最近更新 更多