带有子查询的ORACLE单组功能错误[关闭]

Posted

技术标签:

【中文标题】带有子查询的ORACLE单组功能错误[关闭]【英文标题】:ORACLE SINGLE GROUP FUNCTION ERROR WITH SUBQUERY [closed] 【发布时间】:2018-12-24 08:52:10 【问题描述】:

我需要帮助

我想像这样执行查询

SELECT COUNT(*),
       (SELECT DISTINCT(EMAIL) 
          FROM TABLE2 
         WHERE ID='1') 
  FROM TABLE1 
 WHERE ID='1'

错误:

ORA-00937: 不是单组群函数

OK Lookup Oracle Documentation ...复制运行时异常日志

有什么办法吗?

【问题讨论】:

样本数据和期望的结果会有所帮助。 对于你真正想要的东西至少有两种解释(见答案)。虽然很清楚您收到错误的原因,但完全不清楚您希望从查询中得到什么。 【参考方案1】:

我会避免在SELECT 语句中使用子查询;他们很少做的事情,可能会导致性能不佳并且可以 - 通常 - 被重写为

select count(*), t2.email
from table1 t1 join table2 t2 on t2.id = t.1.id
group by t2.email

【讨论】:

【参考方案2】:

你似乎想要:

SELECT (SELECT COUNT(*) FROM TABLE1 t1 WHERE t1.ID = x.ID),
       (SELECT COUNT(DISTINCT t2.EMAIL) FROM TABLE2 t2 WHERE t2.ID = x.ID)
FROM (SELECT 1 as ID FROM DUAL) x 

【讨论】:

以上是关于带有子查询的ORACLE单组功能错误[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

带有子查询的准备好的语句给出语法错误[关闭]

带有子查询的 MySQL 视图

带有子查询的 Oracle 选择

带有子查询的 Oracle 更新 - 性能问题

带有子查询的 Oracle 数据透视

在子查询、标准或 Oracle 功能中混合聚合值和非聚合值?