现有学生表 student 包括 Name,ID 和 成绩表Score包括 StudentID、科目Subject 开始日期ExDate和成绩Score.
同一个学生同一科目5天内不可能有两次成绩,请写sql查询出一个学生同一科目在5天内成绩重复的记录。
说的都对,主要看出题人的思路,我解答的时候就2中思路都作答最好。
试试,
select a.Name,b.Subject from student a join Score b on a.ID=b.StudentID group by a.Name,b.Subject,b.ExDate having COUNT(b.Subject)>1 and DATEDIFF(day,b.ExDate,GETDATE())<5
我是这样理解的,5天内成绩重复的记录 指的是对比自己最近一次的考试的日期,而你写的是对比今天。你是怎么理解的?
@pengbg: 这个完全看出题者的意思,按你的理解,只需要把今天日期改成max(b.exdate)即可
@星海之辉: max(b.exdate) = b.exdate,你的结果不对
select a.Name,b.Subject from student a join Score b on a.ID=b.StudentID group by a.Name,b.Subject,b.ExDate having COUNT(b.Subject)>1
查询到临时表中,然后游标遍历判断,看看能不能符合你的要求