ORA-00920:在子查询中使用聚合时无效的关系运算符

时间:2019-07-11 07:22:26

标签: sql oracle subquery

我正在用Oracle编写一个简单的查询,

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 
               AND (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;

但是我得到

  

SQL错误[920] [42000]:ORA-00920:无效的关系运算符

1 个答案:

答案 0 :(得分:1)

问题源于

SUM聚合用于SUM(CN.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;

Demo