Dit is niet echt een antwoord op de vraag, maar het lijkt eerder een parserbug (of 'functie') te zijn dan een taalvereiste.
Volgens My Oracle Support lijkt dit te zijn gemeld als bug 14196463, maar is deze zonder oplossing gesloten. Het wordt ook genoemd in communitythread 3561546. Je hebt echter een MOS-account nodig, of op zijn minst een Oracle-account, om een van beide te zien.
Het is ook besproken in een OTN-thread die een basis Oracle-aanmelding vereist in plaats van een MOS-account, voor zover ik weet. Dat heeft ook niet veel informatie, maar herhaalt je bevindingen, en suggereert ook dat het gedrag minstens tot 9.2.0.8 en misschien veel eerder bestond.
De documentatie is een beetje vaag, maar geeft niet aan dat dit naar verwachting een probleem zal zijn:
Voor samengestelde zoekopdrachten met set-operators
UNION
,INTERSECT
,MINUS
, ofUNION ALL
, deORDER BY
clausule moet posities of aliassen specificeren in plaats van expliciete uitdrukkingen. Ook deORDER BY
clausule kan alleen voorkomen in de laatste componentquery. DeORDER BY
clausule ordent alle rijen die worden geretourneerd door de hele samengestelde zoekopdracht.
Je gebruikt een alias voor je uitdrukking en gebruikt die, en er staat niet dat je bepaalde componenten een alias moet geven (hoewel er natuurlijk niet staat dat je niet moet ook).
Het gedrag lijkt inconsistent met de alias die geldig is voor de uiteindelijke projectie, en de gebruikelijke regel dat de alias alleen geldig is in de volgorde van clausule - dit lijkt ergens tussenin te vallen.