2013-08-22 59 views
-1

我有一個包含以下數據的表。我試圖從基於varchar列的值的表中獲取最新記錄。如何根據a varchar列的值從表中獲取最新記錄

用戶日期Version_No

1 1 - 8 - 13 5.0.12.23

1 14 - 8 - 13 2.0.7P

1 20 - 8 - 13 2.0.8P

2 2 - 8 - 13 5.0.12.23

2 20 - 8 - 13 2.0.8P

3 1 - 8 - 13 2.0.7P

3 14 - 8 - 13 5.0.12.23

3 20 - 8 - 13 5.0.12.23

4 20 - 8 - 13 5.0.12.23

5 14 - 8 - 13 5.0 Version_No柱的.12.23

5 20 - 8 - 13 2.0.8P

數據類型是VARCHAR。 我希望結果能夠給我提供他們在8月20日-13日運行的版本的用戶列表。

用戶日期Version_No

1 20 - 8 - 13 2.0.8P

2 20 - 8 - 13 2.0.8P

3 20 - 8 - 13 5.0.12.23

4 20 - 8 - 13 5.0.12.23

5 20 - 8 - 13 2.0.8P

我使用最大函數與列Version_no但不起作用,因爲它在大多數情況下返回最高值5.0.12.23。

請幫忙!

回答

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 

基於評論編輯。

+0

我不能只依靠日期作爲過濾器,因爲不同的用戶可能已經在不同的日期升級了應用程序。所以我必須使用篩選器取日期範圍來拉取用戶上次啓動應用程序的日期上運行的版本。希望有所幫助。 – user2394657

+0

調整答案,以便它應該獲得每個用戶的最新日期,然後返回表格,以便您可以獲取正在運行的版本。這是假設每個用戶的最新日期表示他們的「當前」或「最新」版本。 –

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

我使用trunc消除時間作爲一個問題。加上日期格式可能會關閉,具體取決於您使用的數據庫和NLS格式。

相關問題