取得最后日期的记录语句
学号 班级 姓名 年龄 打卡日期 打卡内容
0001 一班 张三 20 20130801 图书馆
0001 一班 张三 20 20130701 食堂
0001 一班 张三 20 20130709 宿舍
0002 一班 李四 20 20130802 教室
0002 一班 李四 20 20130706 图书馆
0002 一班 李四 20 20130708 宿舍
同一个学号,会有多个记录,想找出所有最后打卡日期的那条,谢谢!
结果为:
学号 班级 姓名 年龄 打卡日期 打卡内容
0001 一班 张三 20 20130801 图书馆
0002 一班 李四 20 20130802 教室
[解决办法]
SELECT * FROM tb a
WHERE NOT EXISTS
(
SELECT 1
FROM tb b
WHERE a.学号 = b.学号
AND b.打卡日期 > a.打卡日期
)
;WITH cte AS
(
SELECT rowno = ROW_NUMBER() OVER(PARTITION BY 学号 ORDER BY 打卡日期 DESC),* FROM tb
)
SELECT * FROM Cte
WHERE rowno = 1
select a.* from tb a,(
select 学号,max(打卡日期) as 打卡日期
from tb
group by 学号
)b
where a.学号=b.学号 and a.打卡日期=b.打卡日期