Oracle SQL has never fully complied with the ANSI / ISO SQL standard. For example, it never supported AS in a from clause:
select *from dual AS d;
The current compliance state ( Oracle Compliance To Core SQL: 2011 for Oracle 12c) indicates that various ANSI SQL functions are supported mostly partially, for example:
... E031, Identifiers: Oracle supports this feature, with the following exceptions: ...
or,
E051, Basic query specification Oracle fully supports the following subfeatures: ...
And although he says nothing about ambiguous aliases (or range variables officially), you can anticipate that the differences can easily go deeper than indicated on the page.
Currently, I don’t know how to make Oracle vague in such cases, but just making sure that your aliases differ is not so difficult, in my opinion.
You may wonder if ANSI SQL Standard does not say exactly that duplicate aliases in the same scope are not allowed. Section 7.6 of Part 2 contains the SQL / Foundation SQL Standard: 2011 document. (You can download a draft from www.wiscorp.com ). In particular, in the subsection "Syntax Rules", 10), it says (I redid it a little):
10) Let RV be a range variable that is exposed by TR. Let RV1 be a range variable that is exposed by a <table reference> TR1 that has the same scope clause as TR. a) If RV is a <table name>, then i) If RV1 is a <table name>, then RV1 shall not be equivalent to RV. ii) Otherwise, RV1 shall not be equivalent to the <qualified identifier> of RV. b) Otherwise i) If RV1 is a <table name>, then the <qualified identifier> of RV1 shall not be equivalent to RV. ii) Otherwise, RV1 shall not be equivalent to RV.
Here, the RVs are variable ranges, and you can see that the last choice applies to the case with two aliases.
We know that the basic SQL markers implement this check (SQL Server, MySQL, PostgreSQL), so this information must be accurate, despite the fact that it left the project.