从具有唯一标识的重复记录中获取前三个记录

时间:2014-04-25 06:24:03

标签: sql sql-server

我正在使用SQL Server 2008 R2。我的管理工作室WORK有一张桌子。我想获得此表中每位员工的前3条记录。该表具有主键workID和外键employeeiD。该表按日期降序排序。我不需要连接到其他表。仅获取当前employeeID的特定前3个记录。这是我的示例查询。

SELECT 
    wtop.workid, wtop.employeeid 
FROM 
    work wtop 
WHERE 
    wtop.employeeid IN (SELECT TOP 3 wsub.employeeid 
                        FROM work wsub 
                        WHERE wsub.employeeid = wtop.employeeid 
                        ORDER BY wsub.employeeid)

1 个答案:

答案 0 :(得分:5)

如何使用ROW_NUMBER

这样的东西
;WITH WorkVals AS (
        SELECT  *,
                ROW_NUMBER() OVER(PARTITION BY employeeID ORDER BY [Date] DESC) RowID
        FROM    Work
)
SELECT  *
FROM    WorkVals 
WHERE   RowID <= 3