【问题标题】:ORA-00920: invalid relational operator when using aggregate inside sub queryORA-00920: 在子查询中使用聚合时无效的关系运算符
【发布时间】:2019-11-20 20:20:12
【问题描述】:

我正在 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: 无效的关系运算符

【问题讨论】:

    标签: sql oracle subquery


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2014-09-17
      • 2018-08-07
      • 2014-03-25
      • 2020-02-07
      • 1970-01-01
      • 2020-01-29
      • 2014-07-07
      • 1970-01-01
      相关资源
      最近更新 更多