如何根据varchar列的值从表中获取最新记录

时间:2013-08-22 17:24:46

标签: sql max

我有一张包含以下数据的表格。我正在尝试根据a varchar列的值从表中获取最新记录。

用户日期Version_No

1 1-Aug-13 5.0.12.23

1 14-Aug-13 2.0.7P

1 20-Aug-13 2.0.8P

2 2-Aug-13 5.0.12.23

2 20-Aug-13 2.0.8P

3 1-Aug-13 2.0.7P

3 14-Aug-13 5.0.12.23

3 20-Aug-13 5.0.12.23

4 20-Aug-13 5.0.12.23

5 14-Aug-13 5.0.12.23

5 20-Aug-13 2.0.8P

Version_No列的数据类型是Varchar。 我希望结果能够为我提供他们在20-Aug-13上运行的版本的用户列表。

用户日期Version_No

1 20-Aug-13 2.0.8P

2 20-Aug-13 2.0.8P

3 20-Aug-13 5.0.12.23

4 20-Aug-13 5.0.12.23

5 20-Aug-13 2.0.8P

我使用了带有Version_no列的max函数,但是在大多数情况下,它不能正常返回最高值5.0.12.23。

请帮忙!

2 个答案:

答案 0 :(得分:0)

使用子查询获取每个用户的最新日期:

SELECT yt.User, yt.Date, yt.Version_No
FROM (SELECT User, MAX(Date) AS LatestUpdate FROM YourTable GROUP BY User) AS lu
INNER JOIN YourTable AS yt ON lu.LatestUpdate = yt.Date AND lu.User = yt.User

根据评论进行编辑。

答案 1 :(得分:0)

Select user, date, Version_No from tablename where trunc(date) = '20-AUG-2013'

我使用trunc来消除时间问题。加上日期格式可能会关闭,具体取决于您使用的数据库和NLS格式。