>我有ID,SID,CHECKID,DATE的餐桌学生
>此处ID:tableID(自动递增),SID:studentID,CHECKID:0/1(即IN / OUT),DATE.
>学生进入教室时,将用卡节省每天的出勤率.
>我有数据是
ID SID CHECKID DATE
———– —–
0 101 0 2013年10月10日10:00:00
1 101 1 04-10-2013 11:30:00
2101 0 04-10-2013 14:15:00
>我试过像这样的查询:
从学生中选择DISTINCT SID,MAX(DATE),CHECKID,其中SID =’101’按SID分组
>然后我得到了两个记录的结果.
>我需要的记录是最大日期(即特定学生的最近记录),例如:仅第3条记录.
>任何帮助.在此先感谢.
解决方法:
最快的方法可能是使用解析函数:
select *
from (select s.*,
row_number() over(partition by sid order by date desc) as rn
from student s)
where rn = 1
另一种方法是相关子查询:
select *
from student s
where date = (select max(x.date) from student x where x.sid = s.sid)
另一种方法是加入内联视图:
select s.*
from student s
join (select sid, max(date) as sid_last_date from student group by sid) v
on s.sid = v.sid
and s.date = v.sid_last_date