【问题标题】:ORA-00979: not a GROUP BY expression (Case statement issue)ORA-00979: 不是 GROUP BY 表达式(Case 语句问题)
【发布时间】:2017-06-20 06:30:04
【问题描述】:

我在以下查询中收到 ORA-00979 错误消息。我应该先声明我已经阅读了 Stack Overflow 上关于此错误的许多讨论,但仍然找不到解决方案。我也确信错误来自 CASE 语句,因为当我完全删除该语句时,查询已产生结果,并且当我删除除“SUM(Z.EQUITY_FOUR)”之外的所有 CASE 语句时,我也收到了结果(也就是说,我也确信 EQUITY_FOUR 从中提取的数据库没有问题)。

SELECT 
EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE) as Yr,
EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE) as Mth,
Q.CITY as City,
CASE WHEN pp.ISACTIVE = 'NO' 
AND EXTRACT(YEAR FROM HDS.CANCELLATION_DATE) = EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE) 
AND EXTRACT(MONTH FROM HDS.CANCELLATION_DATE) = EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE)
THEN SUM(Z.EQUITY_FOUR)
END as Cancelled

(From Statement)

(Where Statement)

GROUP BY EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE),
     EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE),
     Q.CITY,
     CASE 
     WHEN pp.ISACTIVE = 'NO' 
     AND EXTRACT(YEAR FROM HDS.CANCELLATION_DATE) = EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE) 
     AND EXTRACT(MONTH FROM HDS.CANCELLATION_DATE) = EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE)
     THEN SUM(Z.EQUITY_FOUR)
     END

关于 Group BY 子句中的 CASE 语句,在进行研究时,我阅读了这篇 (ORA-00979: not a GROUP BY expression issue) 帖子,其中包含两个回复,说明将完整的 CASE 语句添加到 GROUP BY 表达式中,并且该帖子的作者声称为他的查询工作。但是,我仍然收到上述错误。

感谢您的帮助!

【问题讨论】:

    标签: oracle case aggregate-functions


    【解决方案1】:

    我想你想要SUM() 中的CASE

    SELECT EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE) as Yr,
           EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE) as Mth,
           Q.CITY as City,
           SUM(CASE WHEN pp.ISACTIVE = 'NO' AND
                         EXTRACT(YEAR FROM HDS.CANCELLATION_DATE) = EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE) AND
                         EXTRACT(MONTH FROM HDS.CANCELLATION_DATE) = EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE)
                    THEN Z.EQUITY_FOUR
               END) as Cancelled
    (From Statement)
    (Where Statement)
    GROUP BY EXTRACT(YEAR FROM HDS.MORTGAGE_START_DATE),
             EXTRACT(MONTH FROM HDS.MORTGAGE_START_DATE),
             Q.CITY;
    

    【讨论】:

      猜你喜欢
      • 2011-06-29
      • 1970-01-01
      • 2011-06-04
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 2013-06-25
      • 2011-04-24
      相关资源
      最近更新 更多