Select a record with most recent date and time in Oracle
本问题已经有最佳答案,请猛点这里访问。
我有一个关于Oracle中的SQL查询的问题,IO需要选择日期和时间最新的行,其中日期和时间插入到两个单独的列中。
表
1 2 3 4 5 6 7 8 9 10 | 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 |
我希望我的查询重新返回最近的交易,应该是:
1 2 3 | CustomerID TransactionDate TransactionTime --------------------------------------------------- 0206016 17-APR-17 15:29:34 |
当我运行以下查询时:
1 2 3 | SELECT * FROM TransactionRecords tst WHERE tst.TransactionDate IN (SELECT MAX(TransactionDate) FROM TransactionRecords) |
我正在获取最近日期发生的所有交易。有人能给我提些建议吗?
在Oracle 12c中,您可以执行以下操作:
1 2 3 4 | SELECT * FROM your_table ORDER BY TransactionDate DESC, TransactionTime DESC FETCH FIRST 1 ROWS ONLY; |
在较低版本中,可以使用
1 2 3 4 5 6 7 | SELECT * FROM ( SELECT * FROM your_table ORDER BY TransactionDate DESC, TransactionTime DESC ) WHERE ROWNUM = 1; |
使用
1 2 3 4 5 6 7 8 9 | WITH CTE AS ( SELECT t1.*, ROW_NUMBER() OVER(ORDER BY TransactionDate DESC, TransactionTime DESC) AS rn FROM MyTable t1 ) SELECT CTE.* FROM CTE WHERE rn = 1 |
从TransactionRecords TST中选择*。按TST.交易日期TST.交易时间描述排序