select 员工ID,a.[1] 上班时间,b.[1] 下班时间,datediff(mm,b.[1] - a.[1]) 累计时间,
a.[2] 上班时间,b.[2] 下班时间,datediff(mm,b.[2] - a.[2]) 累计时间,.......
from
( select 员工ID,上班时间 from 考勤表
pivot ( min( 考勤时间) for datepart(dd, 考勤时间) in ( [1],[2],[3],................... )) as pvt ) a,
( select 员工ID,上班时间 from 考勤表
pivot ( mxn( 考勤时间) for datepart(dd, 考勤时间) in ( [1],[2],[3],................... )) as pvt ) b
where a.员工ID = b.员工ID
你这个查询只能分析出正常打卡(不多卡不缺卡)的情况,如有请个;旷工;多卡缺卡等时,你这个分析不是很到位的。我以前也这样处理过,后使用了则科人力资源管理系统,还是花点钱的实在,你也可以在当地找个好点的系统吧。
什么数据库,考勤时间字段什么类型?
还有,怎么判断是上班或者下班?