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年没有任何记录,它仍然会带来所有这些记录?
答案 0 :(得分:1)
让我猜一下 - 你的日期是varchar?被解雇。任何丑陋丑陋丑陋的不可思议和容易出错的构造的原因
(CONVERT(VARCHAR,Attendance.attDate,101)&lt; '11 / 10/2010')
而不是Attendance.attDate是一个Date对象开始?试试看,看看是否有效。
答案 1 :(得分:0)
你不是说“给我所有的日期都比2010年的这一天少”(< '2/10/2010'
)吗?
也许您需要将<
切换为>
。
答案 2 :(得分:0)
Attendance.attDate
应为数据类型datetime
,如果您希望行在给定日期值之前,则比较应为Attendance.attDate < '20101110'
(YYYYMMDD)。