读书人

(续)实际有关问题的请问

发布时间: 2012-01-20 18:53:53 作者: rapoo

(续)实际问题的请教,急!
我的数据内容如下:

工号 打卡日期 打卡时间

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.打卡时间)

读书人网 >SQL Server

热点推荐