Псевдоним таблицы с объединением все не работает

У меня есть ora-00094 (идентификатор недействителен) в простом запросе, но я не понимаю, почему. Не могли бы вы мне помочь, пожалуйста?

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;

1 ответ

Решение

ORDER BY для ResultSet всего запроса. Таким образом, для ORDER BY здесь нет столбца B. ResultSet имеет только имена столбцов первого запроса.

Попробуй это

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;
Другие вопросы по тегам