一个简单的SQL语句

zlydaaa 2011-12-10 09:38:59
一个用户表(userid,姓名,性别),另外一个是考勤记录表(id,userid,考勤时间),需要找出用户表中所有用户的最后一次考勤记录
...全文
114 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
TBNoO 2011-12-10
  • 打赏
  • 举报
回复

--用户表
1001 zhangsan M
1002 lisi F
1003 wangwu M
--考勤表
1111 1001 2011-12-09 10:20:00.000
1112 1002 2011-12-09 10:20:00.000
1113 1002 2011-12-10 08:23:00.000
--查出结果
1001 zhangsan 2011-12-09 10:20:00.000
1002 lisi 2011-12-10 08:23:00.000
1003 wangwu NULL


[Quote=引用楼主 zlydaaa 的回复:]
一个用户表(userid,姓名,性别),另外一个是考勤记录表(id,userid,考勤时间),需要找出用户表中所有用户的最后一次考勤记录
[/Quote]
TBNoO 2011-12-10
  • 打赏
  • 举报
回复

--rtime 为考勤时间
select u.userid, u.uname, max(r.rtime) last_rtime FROM USERS u
left join records r on u.userid = r.userid
group by u.userid, u.uname
order by u.userid




[Quote=引用楼主 zlydaaa 的回复:]
一个用户表(userid,姓名,性别),另外一个是考勤记录表(id,userid,考勤时间),需要找出用户表中所有用户的最后一次考勤记录
[/Quote]
pengxuan 2011-12-10
  • 打赏
  • 举报
回复

select id,userid,考勤时间 from 考勤记录表 a where not exists(select 1 from 考勤记录表 where userid=a.userid and 考勤时间>a.考勤时间)
octwind 2011-12-10
  • 打赏
  • 举报
回复
举例列举一下需要提取出来的列名吧
zlydaaa 2011-12-10
  • 打赏
  • 举报
回复
还是不对的。

简单的说就是把 考勤记录表 中每个用户(根据考勤时间)最近的那条记录提取出来
octwind 2011-12-10
  • 打赏
  • 举报
回复

select * from 考勤记录表 a where id =
(select top 1 id from 考勤记录表 b where userid = a.userid order by 考勤时间 desc)
zlydaaa 2011-12-10
  • 打赏
  • 举报
回复
可能我提的问题有错误,应该是这样:
一个用户表(userid,姓名,性别),另外一个是考勤记录表(id,userid,考勤时间,考勤卡号...),需要找出每个用户的最近一条考勤记录
octwind 2011-12-10
  • 打赏
  • 举报
回复
select a.userid,a.姓名,max(b.time) from a inner join b
on a.userid = b.userid group by a.userid,a.姓名
q465897859 2011-12-10
  • 打赏
  • 举报
回复
select a.姓名,max(b.time) from a inner join b
on a.userid = b.userid group by a.name
hllfl 2011-12-10
  • 打赏
  • 举报
回复
select * from a where a.name in(select a.name,max(b.time) from a inner join b
on a.userid = b.userid group by a.name);
zlydaaa 2011-12-10
  • 打赏
  • 举报
回复
错了,应该改成

--用户表
userid username serial sex
1001 zhangsan abcdjhg M
1002 lisi sdfdddd F
1003 wangwu stfffff F
--考勤表
id userid ktime kcode FT
1 1001 2011-12-09 10:20:00.000 01201001 0001
2 1002 2011-12-09 10:20:00.000 01201002 0001
3 1002 2011-12-10 08:23:00.000 01201002 0002
4 1003 2011-12-11 08:25:00.000 01201003 0001
--查出结果
userid username serial SEX ktime kcode FT
1001 zhangsan abcdjhg M 2011-12-09 10:20:00.000 01201001 0001
1002 lisi sdfdddd F 2011-12-10 08:23:00.000 01201002 0002
1003 wangwu stfffff F 2011-12-11 08:25:00.000 01201003 0001
zlydaaa 2011-12-10
  • 打赏
  • 举报
回复
--用户表
userid username serial sex
1001 zhangsan abcdjhg M
1002 lisi sdfdddd F
1003 wangwu stfffff F
--考勤表
id userid ktime kcode FT
1 1001 2011-12-09 10:20:00.000 01201001 0001
2 1002 2011-12-09 10:20:00.000 01201002 0001
3 1002 2011-12-10 08:23:00.000 01201002 0002
4 1003 2011-12-11 08:25:00.000 01201003 0001
--查出结果
userid username serial SEX ktime kcode FT
1001 zhangsan abcdjhg M 2011-12-09 10:20:00.000 01201001 0001
1002 lisi sdfdddd F 2011-12-10 08:23:00.000 01201002 0002
1003 wangwu stfffff F 2011-12-11 08:25:00.000 01201003 0003
--小F-- 2011-12-10
  • 打赏
  • 举报
回复
select
a.*,b.考勤时间
from
a left join b
on
a.userid=b.userid
and
not exists(select 1 from b t where userid=b.userid and 考勤时间>b.考勤时间)

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧