私のセットアップは次のとおりです。3つのテーブルがあります-
- 学生 (StudentID、FirstName、LastName など)、
- StudentSemester(StudentID、SemIDなど)、および
- セメスター(SemID、年)
私の要件は、各学生の詳細を取得することですが、最終学期のみです。論理的には、これは学期番号が最も大きい学期を意味します。クエリを正しく取得できないようです。簡単にするために、「年」は単なる整数です (例: 2000 年、1998 年)。以下は、私がしばらく立ち往生している現在のクエリです。
SELECT dbo.Student.LastName + ' , ' + dbo.Student.FirstName AS Student, dbo.Student.Defence1Date, dbo.Student.Defence2Date, COUNT(StudentSemesters_1.SemID)
AS SemesterCount, dbo.Student.EntrySemester + ' - ' +
(SELECT dbo.StudentSemesters.SemID
FROM dbo.StudentSemesters INNER JOIN
dbo.ListSemesters ON dbo.StudentSemesters.SemID = dbo.ListSemesters.SemID
WHERE (dbo.Student.StudentCode = dbo.StudentSemesters.StudentCode)
GROUP BY dbo.StudentSemesters.SemID, dbo.ListSemesters.Year
HAVING (dbo.ListSemesters.Year = MAX(dbo.ListSemesters.Year))) AS Expr1
FROM dbo.Student INNER JOIN
dbo.StudentSemesters AS StudentSemesters_1 ON dbo.Student.StudentCode = StudentSemesters_1.StudentCode
GROUP BY dbo.Student.LastName, dbo.Student.FirstName, dbo.Student.Defence1Date, dbo.Student.Defence2Date, dbo.Student.EntrySemester,
dbo.Student.StudentCode