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