我的数据是
ID SID CHECKID DATE
--- --- -------- -----
0 101 0 04-10-2013 10:00:00
1 101 1 04-10-2013 11:30:00
2 101 0 04-10-2013 14:15:00
我尝试过如下查询:
从学生中选择DISTINCT SID,MAX(DATE),CHECKID,其中SID ='101'组由SID
然后我将结果作为两个记录。
我需要记录的是最长日期(即特定学生的近期记录),如:仅限第3条记录。
提前帮助。谢谢。
答案 0 :(得分:4)
最快的方法可能是使用分析函数:
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