这实际上并不是一个错误,只是一个我想要一些解释的烦恼。我已经尝试过我的 Google-Fu,但我今天显然缺乏技能。
我正在使用 Oracle SQL Developer 4.1.5.21 Build MAIN-21.78 我曾经使用 2010 年的非常旧的版本(不记得版本号),并且它从未提出过这个建议,这让我感到困惑。
本质上,我有以下查询:
SELECT
STDT."Student_ID"
, STDT."Study_Package_Code"
, STDT."Availability_Year"
, STDT.semester_agg AS "Semester"
, MIN(STDT."Application_Date") AS APP_DATE
FROM INT_COMMENCING_APPS STDT
WHERE 1=1
AND STDT."Availability_Year" >= 2017
GROUP BY STDT."Student_ID"
, STDT."Study_Package_Code"
, STDT."Availability_Year"
, STDT.semester_agg
Run Code Online (Sandbox Code Playgroud)
它运行良好,没有错误,并返回预期的数据。然而,甲骨文开发人员告诉我,我又蠢又错,应该去死……好吧,也许没那么糟糕。但它确实给了我一个查询提示,告诉我我错了:
SELECT list inconsistent with GROUP BY;
amend GROUP BY clause to:
STDT."Student_ID"
, STDT."Study_Package_Code"
, STDT."Availability_Year"
, STDT.semester_agg
, MIN(STDT."Application_Date")
Run Code Online (Sandbox Code Playgroud)
请注意它如何告诉我将聚合 MIN 函数添加到我的 GROUP BY 子句中,结果是什么?我已经编写 SQL 多年了,这是我第一次被告知要做这样的事情...坦率地说,我现在忽略 Oracle,因为它是个混蛋,无法礼貌地告诉我为什么。话虽这么说,如果有人有的话,我希望社区能给出解释。:)
谢谢!
编辑 2016 年 9 …