首页 > 解决方案 > UNION ALL,ORDER BY 结尾,无效标识符,升序,错误信息

问题描述

我收到另一条错误消息。请参阅以下错误消息。在这里,我正在做一个 UNION ALL,我可以确认这个查询在最后没有 ORDER BY 的情况下有效。但是,我确实需要在最后按该列排序。所以,我不确定如何解决这个问题。我什至尝试删除第二个查询 a。到 a1。所以他们有不同的别名。我现在知道在执行 UNION ALL 时将 ORDER BY 放在代码的末尾,但没想到会得到无效的标识符。

错误信息

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

标签: sqloracle

解决方案


利用ORDER BY 2, 1 asc -- order by column number

ORDER BY 在执行完完整的 SQL 之后执行。


推荐阅读