select left(日期,6) as 月,员工ID,TYPE,count(*) as 次数 from 表1 group by left(日期,6) as 月,员工ID,TYPE

解决方案 »

  1.   

    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) 
      

  2.   

    select left(日期,6) as 月,员工ID,TYPE,count(*) as 次数 from 表1 group by left(日期,6) ,员工ID,TYPE
      

  3.   

    select 员工id,sum(when type  = '病假' then 1 else 0) as 病假 ,sum(when type  = '迟到' then 1 else 0) as 迟到 from biao where\ group byyuangongid
      

  4.   

    select 员工id,sum(when type  = '病假' then 1 else 0) as 病假 ,sum(when type  = '迟到' then 1 else 0) as 迟到 from biao group by 员工id
      

  5.   

    sum(when type  = '病假' then 1 else 0) as 病假
    when 后可以加上and 的条件么?
      

  6.   

    TOwanyingsong(豌豆) 升星了恭喜啊。
    select left(日期,6) as 月,员工ID,TYPE,count(*) as 次数 from 表1 group by left(日期,6) as 月,员工ID,TYPE
      

  7.   

    /*员工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
    */
      

  8.   

    /*员工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 出差数
      

  9.   

    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)
      

  10.   

    --例ID1号员工‘出差’次数SELECT 员工ID,COUNT(CASE TYPE WHEN '迟到' THEN TYPE END) FROM TABLE1 WHERE 员工ID = 1 GROUP BY 员工ID