(续)实际问题的请教,急!
我的数据内容如下:
工号 打卡日期 打卡时间
001 2006.09.08 07:40:09
001 2006.09.08 08:09:00
002 2006.09.08 08:09:00
001 2006.09.09 08:09:09
.
.
如上是上班打卡记录,假设我们上班时间是8点的话,我要找出每天迟到的人,就是说我要找出每天第一次打卡时间是8点之后的人,现在我写的query文,找出的数据都不正确,请大家帮忙,急啊,在线等,
对于如上问题,我已经按照大家提供的方法,就是加一个“迟到”或“正常”的状态字段的方法,部分问题已得到解决,但是我还想要的结果是
不管他是迟到还是正常,我都想显示他的打卡时间。
就是,
工号 日期 时间 状态
001 09.01 08:02 迟到
002 09.01 07:40 正常
请问怎么实现?急,在线等
------解决方案-------------------- create table T(工号 varchar(10), 打卡日期 datetime, 打卡时间 varchar(10))
insert T select '001 ', '2006-09-08 ', '07:40:09 '
union all select '001 ', '2006-09-08 ', '08:09:00 '
union all select '002 ', '2006-09-08 ', '08:09:00 '
union all select '001 ', '2006-09-09 ', '08:09:09 '
select *,状态=(case when (convert(datetime, 打卡时间, 108)> '1900-01-01 08:00:00 ') then '迟到 ' else '正常 ' end) from T as tmp
where not exists(select 1 from T where 工号=tmp.工号 and 打卡日期=tmp.打卡日期 and 打卡时间 <tmp.打卡时间)