【发布时间】: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