读书人

获得最后日期的记录语句

发布时间: 2013-08-10 21:14:06 作者: rapoo

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


)
SELECT * FROM Cte
WHERE rowno = 1


[解决办法]
我写了一篇处理你这个问题的文章,里面详细说明了该怎么做,你看看
http://blog.csdn.net/dotnetstudio/article/details/9766177
[解决办法]

select a.* from tb a,(
select 学号,max(打卡日期) as 打卡日期
from tb
group by 学号
)b
where a.学号=b.学号 and a.打卡日期=b.打卡日期

读书人网 >SQL Server

热点推荐