Detta svarar inte riktigt på frågan, men det verkar vara ett parserfel (eller "funktion") snarare än ett språkkrav.
Enligt My Oracle Support verkar detta ha tagits upp som bugg 14196463 men stängt utan upplösning. Det nämns också i community-tråden 3561546. Du behöver ett MOS-konto, eller åtminstone ett Oracle-konto, för att se någon av dessa dock.
Det har också diskuterats i en OTN-tråd som kräver en grundläggande Oracle-inloggning snarare än ett MOS-konto, så vitt jag kan säga. Det har inte heller mycket information men upprepar dina upptäckter och antyder också att beteendet har funnits tillbaka åtminstone till 9.2.0.8 och kanske mycket tidigare.
Dokumentationen är lite vag men indikerar inte att detta förväntas vara ett problem:
För sammansatta frågor som innehåller setoperatorer
UNION
,INTERSECT
,MINUS
, ellerUNION ALL
,ORDER BY
sats måste ange positioner eller alias snarare än explicita uttryck. ÄvenORDER BY
sats kan endast visas i den sista komponentfrågan.ORDER BY
klausulen ordnar alla rader som returneras av hela den sammansatta frågan.
Du aliaserar ditt uttryck och använder det, och det står inte att du måste aliasa vissa komponenter (även om det naturligtvis inte står att du inte måste antingen).
Beteendet verkar inkonsekvent med att aliaset är giltigt för den slutliga projektionen, och den vanliga regeln om att aliaset endast är giltigt i ordningsföljd - detta verkar falla ner någonstans däremellan.