Oracle SQL Developer 案例表达式嵌套查询导致“ORA-00937: not a single-group group function”错误

Posted

技术标签:

【中文标题】Oracle SQL Developer 案例表达式嵌套查询导致“ORA-00937: not a single-group group function”错误【英文标题】:Oracle SQL Developer Case Expression nested query causing a "ORA-00937: not a single-group group function" error 【发布时间】:2016-12-13 14:16:38 【问题描述】:

我正在尝试构建一个可以由监控平台运行的相当直接的查询。出于这个问题的目的,如果满足警报条件,我需要我的查询返回 1,如果一切正常,我需要返回 0。这是我有正确工作的查询的 sn-p:

select case when count(*)<1700 
THEN '1' 
ELSE '0' 
END CASE 
FROM SomeTable 
WHERE date_value= '11-DEC-2015';

但是,我不想在比较中硬编码 1700 值,而是想做一个嵌套查询以从同一数据库中的另一个表中提取值。当我像这样重写查询时......:

SELECT case when count(*)<(select count(*) from Another_table) 
THEN '1' 
ELSE '0' 
END CASE 
FROM SomeTable 
WHERE date_value= '11-DEC-2015';

...它在我的嵌套查询开始时返回以下内容:

ORA-00937: 不是单组群函数 00937. 00000 - “不是单组群功能”

我知道可能有更好的方法来进行这种类型的比较,或者可能是我忽略的一些简单的方法,但我对 Oracle SQL 还是很陌生,并且非常感谢任何关于如何进行这种相同类型的比较的建议嵌套查询案例表达式。如果我用同样返回单个整数结果的嵌套查询替换整数值,为什么会出现上述错误?

提前感谢您的任何建议!

【问题讨论】:

大小写表达式,而不是大小写陈述。 好收获;将标题更新为 Case 表达式而不是语句。 【参考方案1】:

您最初可以从两个表中获取计数,然后使用这些值进行比较。

select case when s_count < a_count then '1' else '0' end some_col
from (select 
      (select count(*) from another_table) a_count,
      (select count(*) from sometable where date_value= '11-DEC-2015') s_count
      from dual
     ) x

另一种选择是使用count 窗口函数。

select distinct
case when count(*) over() < (select count(*) from another_table) then '1' else '0' end
from sometable
where date_value= '11-DEC-2015'

【讨论】:

哇,这就是我喜欢 *** 的原因!我知道有更好的方法来思考这个问题,而你的答案正是我所需要的!非常感谢!

以上是关于Oracle SQL Developer 案例表达式嵌套查询导致“ORA-00937: not a single-group group function”错误的主要内容,如果未能解决你的问题,请参考以下文章

oracle sql developer工具 如何给用户分配权限

怎样在pl/sql developer中给oracle添加一个调度作业

pl/sql developer中文乱码,为啥呢?怎么解决?Oracle问题

pl/sql developer中文乱码,为啥呢?怎么解决?Oracle问题

pl/sql developer中文乱码,为啥呢?怎么解决?Oracle问题

pl/sql developer和sql developer有啥区别?