在 Oracle 中选择具有最近日期和时间的记录

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)

我正在获取最近日期发生的所有交易。有人可以给我任何建议吗?

MT0*_*MT0 5

在 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)