Sql ORA-00920:在子查询内使用聚合时关系运算符无效
我正在用Oracle编写一个简单的查询 选择CN.MyColumn1, SUMCN.mycolumn 2-CN.mycolumn 3+CN.mycolumn 4, 案例 何时存在 选择“t” 来自表1 CN2 其中CN2.MyColumn1=CN.MyColumn1 和CN2.MyColumn5=0 和CN2.MyColumn2-CN2.MyColumn3+CN2.MyColumn4>= SUMCN.MyColumn2-CN.MyColumn3+CN.MyColumn4*0.5 然后“是” 否则“不” 终止 来自表1 CN 按CN.mycolumn分组1 菌落总数CN.MyColumn2-CN.MyColumn3+CN.MyColumn4<6; 但是我越来越 SQL错误[920][42000]:ORA-00920:无效的关系运算符Sql ORA-00920:在子查询内使用聚合时关系运算符无效,sql,oracle,subquery,Sql,Oracle,Subquery,我正在用Oracle编写一个简单的查询 选择CN.MyColumn1, SUMCN.mycolumn 2-CN.mycolumn 3+CN.mycolumn 4, 案例 何时存在 选择“t” 来自表1 CN2 其中CN2.MyColumn1=CN.MyColumn1 和CN2.MyColumn5=0 和CN2.MyColumn2-CN2.MyColumn3+CN2.MyColumn4>= SUMCN.MyColumn2-CN.MyColumn3+CN.MyColumn4*0.5 然后“是” 否则
问题源于 SUMCN.MyColumn2-CN.MyColumn3+CN.MyColumn4*0.5中使用的总和聚合 需要在HAVING子句中使用。您可以尝试使用以下选项:
SELECT CN.MyColumn1,
SUM(CN.MyColumn2 - CN.MyColumn3 + CN.MyColumn4),
(CASE
WHEN EXISTS (
SELECT 't'
FROM Table1 CN2
WHERE CN2.MyColumn1 = CN.MyColumn1
AND CN2.MyColumn5= 0
HAVING (CN2.MyColumn2- CN2.MyColumn3+ CN2.MyColumn4) >=
SUM(CN.MyColumn2- CN.MyColumn3 + CN.MyColumn4) * 0.5)
THEN 'Yes'
ELSE 'No'
END)
FROM Table1 CN
GROUP BY CN.MyColumn1
HAVING SUM (CN.MyColumn2- CN.MyColumn3 + CN.MyColumn4) < 6;