访问中每组sql的前n条记录

时间:2016-12-19 10:36:57

标签: sql ms-access ms-access-2010 access top-n

我正在制作一些跟踪测试成绩的软件。有多个用户,其详细信息存储在用户表中。然后有一个进度表,用于跟踪日期和用户得分的分数。

我已经可以为所选用户ID选择3条最新记录

SELECT TOP 3 Progress.LoginID, Progress.Score, Progress.[Date Taken]
FROM Progress
WHERE (((Progress.LoginID)=[Enter LoginID:]))
ORDER BY Progress.[Date Taken] DESC;

我可以显示按LoginID分组的所有记录

SELECT Progress.LoginID, Progress.Score, Progress.[Date Taken]
FROM Progress
GROUP BY Progress.LoginID, Progress.Score, Progress.[Date Taken];

我希望能够在一个查询中显示每个用户的3条最新记录,并且我不确定如何使用嵌套查询/子查询来执行此操作。

用户表的字段名称为:

LoginID   
Forename    
Surname   
DOB   
Guardian Forename     
Guardian Surname      
Telephone Number  

进度表的字段名称为:

ProgressID    
LoginID   
Score     
Date Taken 

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:4)

一年前我遇到过类似的问题:Top 3 per group including 0

使用相同的方法,这将返回每个LoginID的最新三个日期 - 如果相同的LoginID存在绑定日期,则可能会获得三个以上的记录。

SELECT  PR1.LogInID, PR1.Score, PR1.[Date Taken]
FROM    Progress AS PR1
WHERE   PR1.[Date Taken] IN (
                        SELECT TOP 3 PR2.[Date Taken]
                        FROM    Progress PR2
                        WHERE   PR2.LoginID = PR1.LoginID
                        ORDER BY PR2.[Date Taken] DESC
                        )
ORDER BY    LoginID, [Date Taken]