当前位置: 代码迷 >> Sql Server >> sql 数据的罗选和表连接
  详细解决方案

sql 数据的罗选和表连接

热度:41   发布时间:2016-04-24 10:04:56.0
sql 数据的筛选和表连接
我现在有个员工表(工号uid 姓名username)考勤表(工号uid 考勤时间attime)一人一天4次考勤
现在我想将上午8:00到9:00为上午上班考勤时间,11点至13点为上午下班考勤时间,13点至15点为下午上班考勤时间,16点至18点为下午下班考勤时间
现在要做成下面这样的表:
员工      上午上班      上午下班       下午上班     下午下班
小陈         正常             未签到             迟到             正常     

这样的SQL语句怎么写
------解决方案--------------------
select
     a.username,
     max(case when b.attime between '8:00' and '9:00' then '正常' when b.attime  is null then '未签到' else '迟到' end) as 上午上班,
     max(case when b.attime between '11:00' and '13:00' then  '正常' when b.attime  is null then '未签到'  else '早退' end) as 上午下班,
---还有两条自己补齐
from
     员工表 as a inner join 考勤表 as b on a.uid=b.uid
group by
     a.username
  相关解决方案