Oracle SQL Query在12C但不在11g中工作
我有一个Oracle SQL查询在12C中工作正常,但在11g中没有.我在下面给出了一个类似的例子.请解释这是否是12C中修复的错误/增强功能. CREATE TABLE MSI_OWNER.VINOTH_TEST1 ( COL1 VARCHAR2(100 BYTE),SAL NUMBER,YEAR NUMBER ) Insert into MSI_OWNER.VINOTH_TEST1 (COL1,SAL,YEAR) Values ('Vinoth',100,1); Insert into MSI_OWNER.VINOTH_TEST1 (COL1,2); COMMIT; SELECT col1,(SELECT MAX (its) FROM (SELECT MAX (year) its FROM vinoth_test1 x WHERE x.col1 = a.col1)) max_year,sal FROM vinoth_test1 a GROUP BY col1,sal 请注意,我已经写了一个不同的逻辑来解决这个问题,但我想知道这是11g中的错误还是12C中的增强. Error in 11g: ORA-00904: "A"."COL1": invalid identifier 解决方法Oracle文档始终明确表示只允许一个级别的关联(尽管没有明确的原因,并且它违反了SQL标准).正如其中一位大师Solomon Yakobson在OTN上多次解释,在每个新版本中,在子版本1中(如10.1,11.1),更深层次的关联工作正常,就像OP注意到的那样.它曾经在子版本2(10.2,11.2)中被“修复”(灵活性被收回). 12.1具有相同的“增强”(所有级别的相关性),12.2没有把它拿走 – 尽管文档STILL表示相关性不允许超过一个级别.特别是因为当我们使用WITH子句编写查询时不存在这样的限制,因此Oracle继续使用该限制是没有意义的. https://docs.oracle.com/database/122/SQLRF/Using-Subqueries.htm#SQLRF52357 当嵌套子查询引用一个表中的一个列时,Oracle执行一个相关子查询,该表引用一个父语句,该语句高于子查询一级[…] (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |