34,838
社区成员




declare @sql varchar(8000)
select @sql=isnull(@sql+',','')+'sum(case when State='''+ltrim(State)+''' then 1 else 0 end)as ['+case ltrim(State) when 4 then '缺勤' when 2 then '早退' when 3 then '正常出勤' end+']'
from (select distinct State from tb)a
exec('select Percode,'+@sql+' from tb group by Percode')
select Percode,sum(Case when state='4' then 1 else 0 end) as 缺勤次数,
sum(Case when state='2' then 1 else 0 end) as 早退次数,
sum(Case when state='3' then 1 else 0 end) as 正常出勤
from TB
GROUP BY Percode
select 人事编号= Percode,
缺勤次数= sum(case when state=4 then 1 else 0 end),
早退次数= sum(case when state=2 then 1 else 0 end),
正常出勤= sum(case when state=3 then 1 else 0 end)
from t
group by Percode
create table tb (Percode varchar(10),PressTimeIn datetime,PressTimeOut datetime,State int)
insert into tb select '00000001','2008-01-05 08:05:06',null,4
insert into tb select '00000002','2008-01-06 08:07:18','2008-01-05 17:07:18 ',3
insert into tb select '00000001','2008-01-05 08:05:06','2008-01-06 15:05:06 ',2
select Percode,
sum(case when State=4 then 1 else 0 end)as '缺勤',
sum(case when State=2 then 1 else 0 end)as '早退',
sum(case when State=3 then 1 else 0 end)as '正常出勤'
from tb group by Percode