SELECT S.studentID, S.studentFName, S.DOB, S.studentEMail, S.studentAddress
FROM Student AS S RIGHT OUTER JOIN
(SELECT Attendance.studentID, COUNT(*) AS cnt FROM Attendance CROSS JOIN
CourseUnit WHERE (Attendance.attStatus = 'Yes') AND (CourseUnit.courseCode = 'S3000') AND (CONVERT(VARCHAR, Attendance.attDate, 101) < '11/10/2010') GROUP BY Attendance.studentID
HAVING (COUNT(*) < 5)) AS A ON A.studentID = S.studentID
一切正常,除了attDate
。我在2010年没有任何记录,它仍然带来了所有的?为什么不通过我的数据过滤日期.. smalldatetime
你为什么把日期当作字符串? SQL Server知道如何比较日期,并且会明智地做到这一点。转换为字符串会打开各种错误的可能性。 –
Attendance.attDate是什么数据类型? –
CONVERT(VARCHAR,Attendance.attDate,101)为什么要转换为varchar – Nighil