Dhr*_*jee 3 sql oracle greatest-n-per-group
我有一个关于 Oracle 中的 SQL 查询的问题,其中 IO 需要选择具有最新日期和时间的行,其中日期和时间被插入到两个单独的列中。
桌子 TransactionRecords
CustomerID TransactionDate TransactionTime
-------------------------------------------------------
0206016 17-APR-17 15:29:34
0213570 17-APR-17 15:29:32
0211384 17-APR-17 13:29:34
0487674 16-APR-17 14:29:30
0487759 15-APR-17 13:29:32
0487213 12-APR-17 13:29:32
0191022 11-APR-17 15:29:33
1141158 29-OCT-16 01:25:51
Run Code Online (Sandbox Code Playgroud)
我期待我的查询返回最近的交易,它应该是:
CustomerID TransactionDate TransactionTime
---------------------------------------------------
0206016 17-APR-17 15:29:34
Run Code Online (Sandbox Code Playgroud)
当我运行以下查询时:
select * from TransactionRecords tst
where tst.TransactionDate in (select max(TransactionDate) from
TransactionRecords)
Run Code Online (Sandbox Code Playgroud)
我正在获取最近日期发生的所有交易。有人可以给我任何建议吗?
在 Oracle 12c 中,您可以执行以下操作:
SELECT *
FROM your_table
ORDER BY TransactionDate DESC, TransactionTime DESC
FETCH FIRST 1 ROWS ONLY;
Run Code Online (Sandbox Code Playgroud)
在较低版本中,您可以使用ROWNUM伪列:
SELECT *
FROM (
SELECT *
FROM your_table
ORDER BY TransactionDate DESC, TransactionTime DESC
)
WHERE ROWNUM = 1;
Run Code Online (Sandbox Code Playgroud)