id  name cardid       time            jinchu  这个是字段  表名 jc_table
1   111   111   2007-8-15 02:22:22      进
2   222   222   2007-8-15 02:22:22      出
3   111   111   2007-8-15 02:25:22      出我想的到结果是 
id  name cardid      次数
1   111   111         2
2   222   222         1

解决方案 »

  1.   

    select id , name, cardid,count(*) as 次数
    from jc_table
    group by  id , name, cardid
      

  2.   

    select name ,cardid , count(*)  次数 from tb group by name ,cardid 
      

  3.   

    select min(id) id , name ,cardid , count(*)  次数 from tb group by name ,cardid 
      

  4.   

    select identity(int,1,1) as id,a.* into # from (select name,cardid,count(*) from  jc_table group by name,cardid) aselect * from #
      

  5.   


    select name,cardid,count(*) as 次数,min(id) as id 
    from jc_tablegroup by name,cardid
      

  6.   

    借用一下!如果改成如下:
    id  name cardid       time            status  这个是字段  表名 jc_table
    1   111   111   2007-8-15 08:00:22      来
    1   111   111   2007-8-15 13:300:22     迟到2   222   222   2007-8-15 08:00:22      没来
    2   222   222   2007-8-15 13:300:22     没来3   111   111   2007-8-15 08:00:22      没来
    3   333   333   2007-8-15 08:00:22      来我想的到结果是 
    id  name cardid       status
    1   111   111         来
    2   222   222         没来
    3   333   333         来即 同一天的两次考勤中,有一次来了(包括迟到)算来,两次都没来的算没来!
    表中记录一个月中,每人的考勤记录,要求统计每天每人的出勤情况。请各位多多指点,谢谢楼住和各位!
      

  7.   

    修改一下!如果改成如下:
    id  name cardid       time            status  这个是字段  表名 jc_table
    1   111   111   2007-8-15 08:00:22      来
    1   111   111   2007-8-15 13:30:22     迟到2   222   222   2007-8-15 08:00:22      没来
    2   222   222   2007-8-15 13:30:22     没来3   111   111   2007-8-15 08:00:22      没来
    3   333   333   2007-8-15 13:30:22      来我想的到结果是 
    id  name cardid       status
    1   111   111         来
    2   222   222         没来
    3   333   333         来即 同一天的两次考勤中,有一次来了(包括迟到)算来,两次都没来的算没来!
    表中记录一个月中,每人的考勤记录,要求统计每天每人的出勤情况。请各位多多指点,谢谢楼住和各位!
      

  8.   

    --来个投机的写法.根据三种状态的音序...
    --请注意,不是通用的
    --测试数据
    create table tb(
    id int,
    name varchar(10),
    carid varchar(10),
    time datetime,
    status varchar(10))
    insert tb select 1,'111','111','2007-8-15','来'
    union all select 1,'111','111','2007-8-15','迟到'
    union all select 2,'222','222','2007-8-15','没来'
    union all select 2,'222','222','2007-8-15','没来'
    union all select 3,'333','333','2007-8-15','没来'
    union all select 3,'333','333','2007-8-15','来'
    select id,name,carid,status=(case when min(status)='没来' then '没来' else '来' end) 
      from tb group by id,name,carid
    drop table tb
    --结果:
    /*
    id          name       carid      status 
    ----------- ---------- ---------- ------ 
    1           111        111        来
    2           222        222        没来
    3           333        333        来
    */