如何获取最新的2个版本号的记录

时间:2016-08-23 14:29:37

标签: sql oracle greatest-n-per-group

如何使用SQL查询从表中获取具有最新2个版本号的记录。 我想为最后两个版本的跟踪user ids提取id

以下是我的表格说明:

TRACKING_ID ,
User_id,
Version_number 

以下查询为我提供了具有最新版本的用户ID。

Select user_id 
from table t1 
join 
(select tracking_id,max(version_number) as version_number 
from table 
 group by tracking_id ) t2
    on t1.tracking_id=t2.tracking_id
    and t1.version_number=t2.version_number

感谢您的回复。

2 个答案:

答案 0 :(得分:4)

您可以使用ROW_NUMBER

SELECT  tracking_id,
        user_id,
        version_number
FROM (  SELECT  *,
                ROW_NUMBER() OVER(PARTITION BY tracking_id ORDER BY version_number DESC) AS RN
        FROM YourTable) AS T
WHERE RN <= 2

答案 1 :(得分:2)

我不完全理解这个问题,但是这样的事情可能会指向正确的方向。

WITH CTE AS (
SELECT tracking_ID, user_ID, version_number,
Row_number() over (partition by USER_ID, Version_number desc) as RN)
SELECT * 
FROM cte 
WHERE RN <= 2;

我不确定user_ID或tracking_ID是否需要分区......