select 员工ID,月份=left(日期,6) ,迟到=sum(case TYPE when '迟到' then 1 else 0 end) ,病假=sum(case TYPE when '病假' then 1 else 0 end) from 表1 group by 员工ID,left(日期,6)
select left(日期,6) as 月,员工ID,TYPE,count(*) as 次数 from 表1 group by left(日期,6) ,员工ID,TYPE
select 员工id,sum(when type = '病假' then 1 else 0) as 病假 ,sum(when type = '迟到' then 1 else 0) as 迟到 from biao where\ group byyuangongid
select 员工id,sum(when type = '病假' then 1 else 0) as 病假 ,sum(when type = '迟到' then 1 else 0) as 迟到 from biao group by 员工id
sum(when type = '病假' then 1 else 0) as 病假 when 后可以加上and 的条件么?
TOwanyingsong(豌豆) 升星了恭喜啊。 select left(日期,6) as 月,员工ID,TYPE,count(*) as 次数 from 表1 group by left(日期,6) as 月,员工ID,TYPE
/*员工ID 日期 TYPE 上班时间 下班时间 1 20040202 病假 2 20040202 迟到 7:00 9:00 3 20040202 出差 */ --测试 drop table 表1 create table 表1 (员工ID int, 日期 datetime ,type varchar(4),上班时间 datetime,下班时间 datetime) insert 表1 select 1 ,'20040202', '病假','' ,'' union all select 2 , '20040202', '迟到','7:00','9:00' union all select 3 , '20040202', '出差','','' select * from 表1 select 员工ID, 月份 = left(日期,6), sum (case type when '病假' then 1 end)as 病假数, sum (case type when '迟到' then 1 end)as 迟到数, sum (case type when '出差' then 1 end)as 出差数from 表1 group by 员工ID,left(日期,6)/*员工ID 日期 病假 迟到 出差1 02 1 NULL NULL 2 02 NULL 1 NULL 3 02 NULL NULL 1 */
/*员工ID 日期 TYPE 上班时间 下班时间 1 20040202 病假 2 20040202 迟到 7:00 9:00 3 20040202 出差 */ --测试 drop table 表1 create table 表1 (员工ID int, 日期 datetime ,type varchar(4),上班时间 datetime,下班时间 datetime) insert 表1 select 1 ,'20040202', '病假','' ,'' union all select 2 , '20040202', '迟到','7:00','9:00' union all select 3 , '20040202', '出差','','' select * from 表1 select 员工ID, 月份 = left(日期,6), sum (case type when '病假' then 1 end)as 病假数, sum (case type when '迟到' then 1 end)as 迟到数, sum (case type when '出差' then 1 end)as 出差数from 表1 group by 员工ID,left(日期,6)/*员工ID 日期 病假 迟到 出差1 02 1 NULL NULL 2 02 NULL 1 NULL 3 02 NULL NULL 1 */ select * from 表1 select 员工ID, 月份 = left(日期,6), sum (case type when '病假' then 1 end)as 病假数, sum (case type when '迟到' then 1 else 0 end)as 迟到数, sum (case type when '出差' then 1 else 0 end)as 出差数
select * from 表1 select 员工ID, 月份 = left(日期,6), sum (case type when '病假' then 1 else 0 end)as 病假数, sum (case type when '迟到' then 1 else 0 end)as 迟到数, sum (case type when '出差' then 1 else 0 end)as 出差数 from 表1 where mid(月份,5,2) = ? group by 员工ID,left(日期,6)
--例ID1号员工‘出差’次数SELECT 员工ID,COUNT(CASE TYPE WHEN '迟到' THEN TYPE END) FROM TABLE1 WHERE 员工ID = 1 GROUP BY 员工ID
,迟到=sum(case TYPE when '迟到' then 1 else 0 end)
,病假=sum(case TYPE when '病假' then 1 else 0 end)
from 表1
group by 员工ID,left(日期,6)
when 后可以加上and 的条件么?
select left(日期,6) as 月,员工ID,TYPE,count(*) as 次数 from 表1 group by left(日期,6) as 月,员工ID,TYPE
1 20040202 病假
2 20040202 迟到 7:00 9:00
3 20040202 出差
*/
--测试
drop table 表1
create table 表1 (员工ID int, 日期 datetime ,type varchar(4),上班时间 datetime,下班时间 datetime)
insert 表1 select 1 ,'20040202', '病假','' ,''
union all select 2 , '20040202', '迟到','7:00','9:00'
union all select 3 , '20040202', '出差','',''
select * from 表1
select 员工ID, 月份 = left(日期,6), sum (case type when '病假' then 1 end)as 病假数,
sum (case type when '迟到' then 1 end)as 迟到数,
sum (case type when '出差' then 1 end)as 出差数from 表1 group by 员工ID,left(日期,6)/*员工ID 日期 病假 迟到 出差1 02 1 NULL NULL
2 02 NULL 1 NULL
3 02 NULL NULL 1
*/
1 20040202 病假
2 20040202 迟到 7:00 9:00
3 20040202 出差
*/
--测试
drop table 表1
create table 表1 (员工ID int, 日期 datetime ,type varchar(4),上班时间 datetime,下班时间 datetime)
insert 表1 select 1 ,'20040202', '病假','' ,''
union all select 2 , '20040202', '迟到','7:00','9:00'
union all select 3 , '20040202', '出差','',''
select * from 表1
select 员工ID, 月份 = left(日期,6), sum (case type when '病假' then 1 end)as 病假数,
sum (case type when '迟到' then 1 end)as 迟到数,
sum (case type when '出差' then 1 end)as 出差数from 表1 group by 员工ID,left(日期,6)/*员工ID 日期 病假 迟到 出差1 02 1 NULL NULL
2 02 NULL 1 NULL
3 02 NULL NULL 1
*/
select * from 表1
select 员工ID, 月份 = left(日期,6), sum (case type when '病假' then 1 end)as 病假数,
sum (case type when '迟到' then 1 else 0 end)as 迟到数,
sum (case type when '出差' then 1 else 0 end)as 出差数
select 员工ID,
月份 = left(日期,6), sum (case type when '病假' then 1 else 0 end)as 病假数,
sum (case type when '迟到' then 1 else 0 end)as 迟到数,
sum (case type when '出差' then 1 else 0 end)as 出差数
from 表1
where mid(月份,5,2) = ?
group by 员工ID,left(日期,6)