主详细信息的SQL查询

主详细信息的SQL查询,sql,Sql,主表包含ID和人名。 课程表包含ID、课程名称。 明细表包含ID、MasterID、CourseID、StartDate和EndDate 我想创建一个报告,显示人员列表(PersonName)和他们最后一次参加的课程(因此每个人只列出一次): 人名-课程名称-开始日期-结束日期 select m.PersonName, c.CourseName from Master m join Detail d on d.MasterID = m.ID join Course c on c.ID

主表包含ID和人名。
课程表包含ID、课程名称。
明细表包含ID、MasterID、CourseID、StartDate和EndDate

我想创建一个报告,显示人员列表(PersonName)和他们最后一次参加的课程(因此每个人只列出一次):

人名-课程名称-开始日期-结束日期

select m.PersonName, c.CourseName
from   Master m
join   Detail d on d.MasterID = m.ID
join   Course c on c.ID = d.CourseID
where  d.StartDate = (select max(d2.StartDate)
                      from   Detail d2
                      where  d2.MasterID = m.ID
                     )
    Select personname,coursename from details 
    inner join course on course.id = details.courseid 
    inner join master on master.id = details.masterid
    inner join (select max(startdate) ,  courseid,masterid 
    from details group by masterid,courseid ) as tb1
    on tb1.courseid = details.courseid and tb1.masterid = details.masterid