读卡机读到数据库表中的内容如下
卡号 工号 部门 刷卡日期 刷卡时间 读卡机名称
20001 60001 A001 2009-8-5 08:25:23 上班
20001 60001 A001 2009-8-5 17:25:23 下班
20001 60001 A001 2009-8-7 19:35:47 上班
20001 60001 A001 2009-8-8 08:25:23 下班
其中前2条为白班的记录,后2条为夜班的记录,从晚上8点到第二天早上8点,一天如果多次刷上下班卡,上班取最晚时间,下班取最早时间,现在我要得到如下格式卡号 工号 部门 上班刷卡时间 下班刷卡时间
20001 60001 A001 2009-8-5 08:25:23 2009-8-5 17:25:23
20001 60001 A001 2009-8-7 19:35:47 2009-8-8 08:25:23
卡号 工号 部门 刷卡日期 刷卡时间 读卡机名称
20001 60001 A001 2009-8-5 08:25:23 上班
20001 60001 A001 2009-8-5 17:25:23 下班
20001 60001 A001 2009-8-7 19:35:47 上班
20001 60001 A001 2009-8-8 08:25:23 下班
其中前2条为白班的记录,后2条为夜班的记录,从晚上8点到第二天早上8点,一天如果多次刷上下班卡,上班取最晚时间,下班取最早时间,现在我要得到如下格式卡号 工号 部门 上班刷卡时间 下班刷卡时间
20001 60001 A001 2009-8-5 08:25:23 2009-8-5 17:25:23
20001 60001 A001 2009-8-7 19:35:47 2009-8-8 08:25:23
select
卡号,工号,部门,刷卡日期,min(刷卡时间),读卡机名称
from
tb
group by
卡号,工号,部门,刷卡日期,读卡机名称
最晚下班时间就用max
导出excel,交给hr,他们很会算的; 需要更多条件,你这给出的简单了
上班时间=max(case [读卡机名称] when '上班' then [刷卡日期]+' '+[刷卡时间] end),
下班时间=min(case [读卡机名称] when '下班' then [刷卡日期]+' '+[刷卡时间] end)
from tb
group by 卡号,工号,刷卡日期
---
20001 60001 2009-8-5 2009-8-5 08:25:23 2009-8-5 17:25:23
20001 60001 2009-8-7 2009-8-7 19:35:23 NULL
20001 60001 2009-8-8 NULL 2009-8-8 08:25:23
这样写的结果不是我想要的