如何使用 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
子句,因此您也可以修改它。
要求:我想先执行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
子句,因此您也可以修改它。