关于这个表的SQL语句该怎么写

来源:百度知道 编辑:UC知道 时间:2024/06/12 20:58:21
表内容 :
张三 2009-2-11 1000.0000
李四 2009-3-11 1000.0000
王五 2009-2-10 200.0000
李四 2009-3-20 2000.0000
张三 2009-3-11 200.0000
王五 2009-3-10 200.0000
通过使用SQL语句,查处每个人最后的一条记录(日期最晚的一天记录)。
返回如下结果:
李四 2009-3-20 2000.0000
张三 2009-3-11 200.0000
王五 2009-3-10 200.0000
SQL语句怎么写
求解~谢谢
日期是Datatime
请测试后回答!!!
数据库SQL2000或者2005
就一个表 table2是哪的??我SQL超级烂 请多多指教 诚心求教

回复(lvxianling ):
你测试就没发现出来了两个李四的数据吗??

SELECT a.名字, a.数据, a.时间
FROM table2 a, (SELECT 名字, max(时间) AS max_时间 FROM table GROUP BY 数据) b
WHERE a.名字 = b.名字 AND a.时间 = b.max_时间

我这测试过的 绝对正确
select * from 表 where 日期 in (
select max(日期) from 表 group by 姓名
)

select max(日期) from 表 group by 姓名

declare @tbl table( 姓名 nchar(20), 日期 datetime, 数据 float)
insert into @tbl
select '张三',2009-2-11,1000.0000 union all
select '李四',2009-3-11,1000.0000 union all
select '王五',2009-2-10,200.0000 union all
select '李四',2009-3-20,2000.0000 union all
select '张三',2009-3-11,200.0000 union all
select '王五',2009-3-10,200.0000
select * from @tbl

select * from @tbl t1 where 日期 in (select max(日期) from @tbl t2 where t1.姓名 = t2.姓名)

先取出表中的姓名和日期,再使用姓名和日期取出表中其他信息
前提是同一姓名同一日期只能有一条数据
否则取出的其他字段需要考虑到底应该取哪条
语句如下:
select table1.* from 表 table1
inner join
(select 姓名,Max(日期) 日期 from 表 group by 姓名)