如何使用 Union 、 Order By 和 Rownum?

How to use Union , Order By and Rownum?

要求:我想先执行Union。然后按顺序排序,然后 select 1 行。

select * from v$version;

--Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 

下面是我的table.

MyTable1

Amt | CreationDate
-----------------
100 |  01/01/2021
200 |  01/02/2021
50  |  10/01/2021

MyTable2

Amt | CreationDate
-----------------
100 |  01/01/2021
200 |  01/02/2021
50  |  10/01/2021

SELECT amt
  FROM (SELECT amt
        FROM MyTable1
        UNION
        SELECT amt
        FROM MyTable2
        ORDER BY CreationDate DESC)
 WHERE rownum = 1;

错误是:ORA-00904:CreationDate 标识符无效

我在 PL/SQL 代码中有这个查询。

对于 order by CreationDate,它需要成为您的 select

的一部分
select amt
from (select amt, creationdate 
      from mytable
      union
      select cst_amt, creationdate 
      from mytable
      order by creationdate desc)
where rownum = 1;

从您对代码的意图来看,我认为您可以直接完成

select greatest(max(amt), max(cst_amt))
from mytable
where cst_amt is not not and amt is not null;

Oracle 12c 支持 fetch 子句,因此您也可以修改它。