
这里面只有两张表:oa_check_out(外出登记表)和oa_check_leave(请假表),要同过外出表的原因例出不同的统计条数。写出来感觉好长。想大神帮改改,而且中感觉还有错误的样子
------解决方案--------------------
思路是这样:1.列出所有的外出原因,2利用group 查询请假表中各种原因汇总出来的条数
再将两个结果关联 就出来了
------解决方案--------------------
select person_id,
sum(case when status1=1 and reason !='WCBS' then 1 else 0 end) as out_times,
sum(case when status2=1 then 1 else 0 end) as leave_times,
sum(case when status1=1 and reason ='WCBS' then 1 else 0 end) as late_times
from
(
select person_id,status as status1 ,null as status2, reason from oa_check_out
union all
select person_id,null as status1, status as status2, reason from oa_check_leave
) un
group by person_id
楼主看看这是不是你要的