一道sql题

一个表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;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值