yo,
mal davon abgesehen, dass ich von XML keine ahnung habe, AS optional ist und ich es in aller regel weglasssen würde, man bei einem UNION / UNION ALL nur das erste Select mit namen qualifizieren muss und nicht alle, liegt es wohl an deiner ungewöhnlichen schreibweise, dass du die doch eindeutige fehlermeldung nicht richtig zuordnen kannst.
du hast das UNION ALL konstrukt als unterabfrager in der projektion der äußeren abfrage erstellt. und da du mehrere datensätze und wohl auch spalten mit deinem UNION ALL zurück bekommst, er dort aber nur einen wert erwartet, kommt diese fehlermeldung. was du machen willst (reine vermutung), ist sicherlich die unterabfrage mit dem UNION ALL als unterabfrage in der FROM klausel setzen und weniger als projektion.
das hast du gemacht:
SELECT (hier_dein_UNION_ALL)
FROM dual
;
das willst du wohl haben:
SELECT tab.*
FROM (hier_dein_UNION_ALL) tab
;
Ilja