考勤表
sysid ktype stime
47 迟到 2006-1-1
47 迟到 2006-1-2
47 请假 2006-1-3
48 迟到 2006-1-4
48 病假 2006-1-5 姓名表
sysid name
47 张三
48 李四我想得到以下结果
sysid name 迟到 请假 病假
47 张三 2 1 0
48 李四 1 0 1
sysid ktype stime
47 迟到 2006-1-1
47 迟到 2006-1-2
47 请假 2006-1-3
48 迟到 2006-1-4
48 病假 2006-1-5 姓名表
sysid name
47 张三
48 李四我想得到以下结果
sysid name 迟到 请假 病假
47 张三 2 1 0
48 李四 1 0 1
a.name,
迟到=sum(case when ktype='迟到' then 1 else 0 end),
请假=sum(case when ktype='请假' then 1 else 0 end),
病假=sum(case when ktype='病假' then 1 else 0 end)
from 姓名表 a inner join 考勤表
on a.sysid=b.sysid
group by a.sysid,a.name
order by a.sysid
sum(case when ktype='迟到' then 1 else 0) as 迟到,
sum(case when ktype='请假' then 1 else 0) as 请假,
sum(case when ktype='病假' then 1 else 0) as 病假
from 考勤表 a,姓名表 b
where a.sysid=b.sysid
group by a.sysid,b.name