-1

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

用户日期版本_No

1 2013 年 8 月 1 日 5.0.12.23

1 2013 年 8 月 14 日 2.0.7P

1 2013 年 8 月 20 日 2.0.8P

2 2013 年 8 月 2 日 5.0.12.23

2 2013 年 8 月 20 日 2.0.8P

3 2013 年 8 月 1 日 2.0.7P

3 2013 年 8 月 14 日 5.0.12.23

3 2013 年 8 月 20 日 5.0.12.23

4 2013 年 8 月 20 日 5.0.12.23

5 2013 年 8 月 14 日 5.0.12.23

5 2013 年 8 月 20 日 2.0.8P

Version_No 列的数据类型是 Varchar。我希望结果为我提供他们在 2013 年 8 月 20 日运行的版本的用户列表。

用户日期版本_No

1 2013 年 8 月 20 日 2.0.8P

2 2013 年 8 月 20 日 2.0.8P

3 2013 年 8 月 20 日 5.0.12.23

4 2013 年 8 月 20 日 5.0.12.23

5 2013 年 8 月 20 日 2.0.8P

我在 Version_no 列中使用了 max 函数,但在大多数情况下它返回的最大值 5.0.12.23 不起作用。

请帮忙!

4

2 回答 2

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

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

于 2013-08-22T17:31:29.273 回答
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

根据评论编辑。

于 2013-08-22T17:30:09.440 回答