日期:2014-05-17  浏览次数:20662 次

取得最后日期的记录语句
学号   班级   姓名   年龄  打卡日期    打卡内容 
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.打卡日期
)

------解决方案--------------------
select a.* from 
tb a,
(select 学号,max(打卡日期) as 打卡日期
from tb 
group by 学号) b 
where a.学号=b.学号 and a.打卡日期=b.打卡日期
------解决方案--------------------
SELECT b.* FROM
(SELECT DISTINCT 学号 FROM tb) a
CROSS APPLY
(SELECT TOP(1) * FROM tb m WHERE m.学号 = a.学号 ORDER BY m.打卡日期 DESC) b

------解决方案--------------------
;WITH cte AS 
(
SELECT rowno = ROW_NUMBER() OVER(PARTITION BY 学号 ORDER BY 打卡日期 DESC),* FROM tb