Я получаю другое сообщение об ошибке. Пожалуйста, смотрите ниже сообщение об ошибке. Здесь я делаю UNION ALL и могу подтвердить, что этот запрос работает без ORDER BY в конце. Тем не менее, мне нужно заказать по этому столбцу в конце. Итак, я не уверен, как решить эту проблему. Я даже пытался удалить второй запрос а. к а1. поэтому они имеют разные псевдонимы. Теперь я знаю, что нужно помещать ORDER BY в конец кода при выполнении UNION ALL, но не ожидал получить неверный идентификатор.
Сообщение об ошибке
ORA-00904: "A1"."ID1": invalid identifier
Error at Line: 1 Column: 678
Код
select a.ID2, a.ID1, cnt, a.*, b.*
from (
select t.*,
count(distinct ID2) over(partition by ID1) cnt
from TABLE1 t) a
, TABLE2 b
where a.cnt > 1
and a.ID2=b.ID2 (+)
and (b.STATUS in ('A','L','P','S')
or b.DATE1 >= TO_DATE('2018-01-01','YYYY-MM-DD'))
union all
select a1.ID2, a1.ID1, cnt, a1.*, j.*
from (
select t.*,
count(distinct ID2) over(partition by ID1) cnt
from TABLE1 t) a1
inner join TABLE2 j
on a1.ID2=j.ID2
inner join SCHEMA1.TABLE3 d
on j.ALTER_ID2=d.ALTER_ID2
where a1.cnt > 1
order by a.ID1 asc, a1.ID1 asc