求这样的SQL语句,我脑子转不过来了。

bjzhanghao 2003-05-07 07:05:35
有两个表,一个person(personid,personname)和另一个status(personid,status,dt),dt是datetime类型的代表人进入状态的时间,status是整型的。

因为一个人可以有好几个状态,我想得到一个列表r(personid,dt,status),里面列出每个人的所有状态,但同一天里的状态只要最晚的那个。

我想了好久也不知道该怎么弄,我是想做成一个视图,而不是存储过程。很着急,谢谢大家了。
...全文
50 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
bjzhanghao 2003-05-07
好了,我想真正运行起来不会出现这种情况的,呵呵
谢谢二位,结帐了。
回复
pengdali 2003-05-07
你的数据列一部分出来
回复
bjzhanghao 2003-05-07
是在同一天里同一时刻有两个状态的时候出现上面我说的问题,能解决吗?
回复
bjzhanghao 2003-05-07
不行啊,用两位说的语句都试了,存在重复的记录(同一天同一个人的状态出现多次,而不只是当天最晚的状态记录),再帮忙看看好吗?
回复
nboys 2003-05-07
create view view_name
as
select * from status s where dt=(select max(dt) from status where personid=s.personid)
回复
pengdali 2003-05-07
select a.personid,b.status,b.dt from person a,(select * from status 别名 where dt=(select max(dt) from status where personid=别名.personid)) b where a.personid=b.personid
回复
nboys 2003-05-07
select * from status s where dt=(select max(dt) from status where personid=s.personid)
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2003-05-07 07:05
社区公告
暂无公告