如何使用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
感谢您的回复。
答案 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是否需要分区......