Това всъщност не отговаря на въпроса, но изглежда е грешка в анализатора (или „функция“), а не изискване за език.
Според My Oracle Support, това изглежда е повдигнато като грешка 14196463, но е затворено без решение. Също така се споменава в нишка на общността 3561546. Трябва ви MOS акаунт или поне акаунт в Oracle, за да видите някой от тях.
Това също беше обсъдено в OTN тема, която изисква основно влизане в Oracle, а не MOS акаунт, доколкото мога да преценя. Това също няма много информация, но повтаря вашите открития и също така предполага, че поведението е съществувало поне до 9.2.0.8 и може би много по-рано.
Документацията е малко неясна, но не показва, че това се очаква да е проблем:
За сложни заявки, съдържащи оператори за набор
UNION
,INTERSECT
,MINUS
, илиUNION ALL
,ORDER BY
клаузата трябва да указва позиции или псевдоними, а не изрични изрази. Също така,ORDER BY
клаузата може да се появи само в последната заявка за компонент.ORDER BY
клаузата подрежда всички редове, върнати от цялата съставна заявка.
Вие създавате псевдоним на израза си и го използвате и това не казва, че трябва да създавате псевдоним на определени компоненти (въпреки че, разбира се, не казва, че не трябва или едно от двете).
Поведението изглежда несъвместимо с псевдонима, който е валиден за окончателната проекция, и обичайното правило за това, че псевдонимът е валиден само в клауза за подреждане – изглежда, че пада някъде по средата.