SQL选择显示最新记录

时间:2017-10-05 19:27:36

标签: sql oracle select top-n

因此,在这种情况下,表中的一列具有多个记录的相同值,但Date列具有增量值。

ID| PAY_CODE| RATE  |   Date
---------------------------------
1 |  1111   |  50   | 2017-01-01
2 |  1111   |  50   | 2017-02-01
3 |  1111   |  50   | 2017-03-11
4 |  1111   |  50   | 2017-05-21

如果输入的最新Date未知,我如何才能打印最新记录?

预期结果:

ID| PAY_CODE| RATE  |   Date
---------------------------------
4 |  1111   |  50   | 2017-05-21

我需要一个SQL查询,它在内部比较Date列并返回最高值(在这种情况下是最新日期) - 这是否可能?

4 个答案:

答案 0 :(得分:2)

我认为这可以满足您的需求:

select t.*
from t
where t.date = (select max(t2.date) from t t2);

答案 1 :(得分:1)

您可以使用rank窗口函数:

SELECT id, pay_code, rate, date
FROM   (SELECT id, pay_code, rate, date, RANK() OVER (ORDER BY data DESC) AS rk
        FROM   mytable) t
WHERE  rk = 1

答案 2 :(得分:0)

select t.*
from ( select * from table order by date desc) t
where rownum < 2

答案 3 :(得分:0)

我认为您应该使用SELECT * FROM YOUR_TABLE T WHERE T.DATE = ( SELECT MAX(DATE) FROM YOUR_TABLE)这样确保获取最新结果,使用TOP的其他解决方案无法按预期工作