Sql 如何获得每个主记录的最后2个详细信息?
我需要一个MS Access中的查询,该查询将返回到每个学生完成的最后一堂课。数据如下所示: 学生Sql 如何获得每个主记录的最后2个详细信息?,sql,ms-access-2010,master-detail,Sql,Ms Access 2010,Master Detail,我需要一个MS Access中的查询,该查询将返回到每个学生完成的最后一堂课。数据如下所示: 学生 ID | StudentName 1 John 2 Bill 3 Ted 4 Edward 培训细节 ID | StudentID | ClassName | Date 1 1 Math 10/10/2012 2 1 Science 12/10
ID | StudentName
1 John
2 Bill
3 Ted
4 Edward
培训细节
ID | StudentID | ClassName | Date
1 1 Math 10/10/2012
2 1 Science 12/10/2012
3 2 Math 10/10/2012
4 3 Math 10/10/2012
5 2 Art 09/10/2012
6 2 History 02/10/2012
7 3 Science 12/10/2012
8 3 History 02/10/2012
9 4 Music 12/10/2012
期望输出
Name | Class | Date
John Science 12/10/2012
John Math 10/10/2012
Bill Math 10/10/2012
Bill Art 09/10/2012
Ted Science 12/10/2012
Ted Math 10/10/2012
Edward Music 12/10/2012
我尝试使用SELECTTOP2子句,但总共只得到2条记录。我想我需要某种类型的循环来获取每个学生以及每个学生的前2个记录,但我无法在一个查询中获取所有记录。如果我们使用自连接查询,我们可以为每个学生的各个类分配一个排名1=最近:
选择
t1.学生,
t1.ClassName,
t1.日期,
把*算作等级
从…起
培训详情如t1所示
内连接
培训详情如t2所示
在t2.StudentID=t1.StudentID上
t2.日期>=t1.日期
分组
t1.学生,
t1.ClassName,
t1.日期
按1、4顺序订购
返回
学生ID类名日期排名
----- ----- ----- --
1科学2012-12-10 1
1数学2012-10-10 2
2数学2012-10-10 1
2第2012-09-10条2
2历史2012-02-10 3
3科学2012-12-10 1
3数学2012-10-10 2
3历史2012-02-10 3
4音乐2012-12-10 1
我们可以将其与[Students]合并以获得名称,并将结果限制为Rank=t1.Date的结果
分组
t1.学生,
t1.ClassName,
t1.日期
AS cr
在cr.StudentID=s.ID上
其中cr.Rank尝试以下查询。我有一个与SQLServer的工作,但应该工作的访问。您可以根据需要订购结果 选择s.StudentName、t.classname、t.date 来自学生的 t.StudentID=s.id上的内部连接培训详细信息t 其中t.日期在选择前2个t2.日期 来自培训详情t2 其中t2.StudentID=s.ID 按t2订购。日期说明 已更正代码以使用Access SQL