2017-11-21 3 views
0

Ich habe ora-00094 (Bezeichner nicht gültig) in einer einfachen Abfrage, aber ich kann nicht sehen, warum. Kannst du mir bitte helfen?Alias-Tabelle mit Union alle funktioniert nicht

select columnA, 'More than 4000 bytes' 
from tableA 

union all 

select p.columnB, listagg(p.columnC, ',') within group (order by p.columnC) 
from (   
    select distinct b.job_name, a.hostname 
    from tableB a, emuser.def_job b 
) p 
group by p.columnB 
order by p.columnB desc; 

Antwort

1

ORDER BY ist für ResultSet der gesamten Abfrage. Also für ORDER BY gibt es hier keine columnB. ResultSet hat nur Spaltennamen der ersten Abfrage.

Versuchen Sie, diese

SELECT columnA, 'More than 4000 bytes' as columnC FROM tableA 
UNION ALL 
    SELECT p.columnB, LISTAGG (p.columnC, ',') WITHIN GROUP (ORDER BY p.columnC) 
    FROM (SELECT DISTINCT b.job_name, a.hostname 
      FROM tableB a, emuser.def_job b) p 
GROUP BY p.columnB 
ORDER BY p.columnA DESC;