也许有用的SQL:对单表数据进行count统计生成简单的交叉表

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

你可能感兴趣的:(SQL,sql)