sql - 简单案例语句返回 ORA-00937:不是单组组函数
问题描述
当我尝试执行以下块时,它返回 ORA-00937。有人可以帮助这里发生的事情吗?
select case when count(1)=0 then (select 0 from dual)
else (select 1 from dual )
end test1
from dual;
这只是我尝试过的简化示例,我正面临这个错误。我有一个相当复杂的查询,它具有相似的结构,但由于相同的错误而失败。
解决方案
错误消息专门指向 ; 中的select 0 from dual
0 为什么它特别指出这一点尚不清楚,因为 0 本身是一个常量(因此它始终是一个 GROUP BY 表达式,无论发生什么其他事情)。Gordon Linoff 更有可能是正确的:标量子查询本身就是问题,因为 Oracle 不会“现在”(在编译时)评估它,它只是说“我不能假设它会变成持续的”。在这种情况下,错误消息应该指向子查询的开头,而不是其中的 0。那好吧...
无论如何:如果您想以等效的方式重写它,从一开始就有效,您可以执行以下操作:
select case when exists (select * from dual) then [the first thing]
else [the other thing] end ....
count(1) = 0
用条件替换您的exists
- 不同之处在于不涉及聚合。
推荐阅读
- php - WooCommerce 产品循环中添加 Ajax 选项的复选框添加到购物车
- r - R 合并两个 gsub() 语句
- excel - 在 Excel 中的多选下拉列表中仅限制两个选择
- android - 如何将图像保存在外部存储中并使其在 Android 5.1 中的图库中可见?
- php - 在 Laravel 中包含布局
- c# - 为什么我在使用任务时无法正确填充集合?
- api - Power BI 和 Workfront api 连接器
- delphi - 新 PC 上 TWEBBROWSER 中的 Adobe PDF 阅读器插件
- css - 反应不导入css文件
- java - 如何以编程方式在 EditText 中设置填充?