一个表5个字段anghter代表是考勤信息,kaoqinid代表是考勤号,yeid区别上午早退与上午迟到,
下午早退与下午迟到,
0表示为上午早退,1表示为上午迟到,2表示为下午早退,3表示为下午早退
我想得到这样的查询效果
kaoqinid 上午早退 上午迟到 下午早退 下午早退
111111 8(次数) 21(次数) 11(次数) 12(次数)
222222 10(次数) 11(次数) 11(次数) 11(次数)
表中若干条记录数据如下:
angther yeid kaqinid
上午早退了 0 111111
下午迟到了 2 222222
下午迟到了 2 222222
下午迟到了 2 222222
上午迟到了 1 111111
上午早退了 0 111111
上午早退了 0 111111
下午迟到了 2 222222
下午早退了 3 222222
下午早退了 3 111111
下午迟到了 3 222222
下午早退了 3 222222
下午早退了 3 222222
下午迟到了 2 111111
下午早退了 3 111111
下午早退了 3 111111
下午迟到了 2 222222
下午早退了 3 222222
select kaqinid,
sum(case when yeid='0' then 1 else 0 end),
sum(case when yeid='1' then 1 else 0 end),
sum(case when yeid='2' then 1 else 0 end),
sum(case when yeid='3' then 1 else 0 end)
from t_anghter
group by 1
/*use test;
drop table if exists kaoqin;
create table kaoqin ( id int auto_increment primary key,kaoqinid varchar (20) not null, chuqing varchar (10) ) ;
insert into kaoqin values (1,'111111','上午早退');
insert into kaoqin values (2,'222222','下午迟到');
insert into kaoqin values (3,'222222','下午迟到');
insert into kaoqin values (4,'222222','下午迟到');
insert into kaoqin values (5,'111111','上午迟到');
insert into kaoqin values (6,'111111','上午早退');
insert into kaoqin values (7,'111111','上午早退');
insert into kaoqin values (8,'222222','下午迟到');
insert into kaoqin values (9,'222222','下午早退');
insert into kaoqin values (10,'111111','下午早退');
insert into kaoqin values (11,'222222','上午迟到');
insert into kaoqin values (12,'222222','上午早退');
insert into kaoqin values (13,'111111','下午迟到');
insert into kaoqin values (14,'111111','下午迟到');
insert into kaoqin values (15,'222222','上午迟到');
*/
create or replace view kaoqinview as
select A.kaoqinid,A.chuqing as 上午迟到情况,
B.chuqing as 上午早退情况,
C.chuqing as 下午迟到情况,
D.chuqing as 下午早退情况 from kaoqin A,kaoqin B,kaoqin C,kaoqin D
where A.kaoqinid = B.kaoqinid and B.kaoqinid=C.kaoqinid and C.kaoqinid=D.kaoqinid and A.chuqing='上午迟到' and
B.chuqing='上午早退' and C.chuqing='下午迟到' and D.chuqing='下午早退';
select kaoqinview.kaoqinid,count(上午迟到情况 ) as 上午迟到次数,count(上午早退情况 ) as 上午早退次数,
count(下午迟到情况 ) as 下午迟到次数,count(下午早退情况 ) as 下午早退次数
from kaoqinview where 1=1 group by kaoqinview.kaoqinid;