——考勤表——
员工id 员工账号 密码 上班日期 上班时间 下班时间 上班状态 下班状态
1 001 aaa 2009-10-11 08:10 17:00 迟到 正常
2 002 aaa 2009-10-11 08:00 17:00 正常 正常
3 001 aaa 2009-10-11 08:00 16:50 正常 早退
4 004 aaa 2009-11-11 08:00 17:00 正常 正常
5 001 aaa 2009-10-11 08:00 17:00 正常 正常
小弟想统计账号为001的员工的10月份考勤情况:
即想到的结果如下:
员工账号 迟到次数 早退次数 正常上班次数
001 1 1 1
请各位指点迷津啊!!!谢过了!!!
小弟菜的很。。。。。。
declare @t table(员工id varchar(10),上班状态 varchar(10), 下班状态 varchar(10))
insert @t
select '001','迟到','正常'
union all
select '001','正常','早退'
union all
select '001','正常','正常'
union all
select '002','正常','正常'
union all
select '004','正常','正常'
select 员工id ,
迟到次数=sum(case when 上班状态='迟到' then 1 else 0 end),
早退次数=sum(case when 下班状态='早退' then 1 else 0 end),
正常上班=sum(case when 上班状态='正常' and 下班状态='正常' then 1 else 0 end)
from @t
where 员工id='001'
group by 员工id
具体数据库产品是?MSSQL?还是?是否需要标准SQL?
还有一个,既迟到,又早退,是否重复计算?还是谁优先?呵呵。
同一天 001 怎么有三条考勤记录~
用交叉报表....二楼正解,但是为什么要先插入临时表呢?为了提高性能?