select a.* 
from  表 a,(select 姓名,min(时间) as 时间 from 表 group by 姓名) b
where a.姓名=b.姓名 and a.时间=b.时间

解决方案 »

  1.   

    select top 2 * from table order by 时间字段 desc  group by 姓名字段
      

  2.   

    我想arrow_gx(8088的脑袋) 的办法不错。
    不过问题又来了。
    这里我举的例子是已知只有两个人。
    但是如果表的内容是从外部导入的,不知道总共会有多少人呢?
      

  3.   

    select a.* 
    from  表 a,(select 姓名,min(时间) as 时间 from 表 group by 姓名) b
    where a.姓名=b.姓名 and a.时间=b.时间 and datename(hour,getdate())<=12 
    union 
    select a.* 
    from  表 a,(select 姓名,min(时间) as 时间 from 表 group by 姓名) b
    where a.姓名=b.姓名 and a.时间=b.时间 and datename(hour,getdate())>12 
      

  4.   

    select a.* 
    from  表 a,(select 姓名,max(时间) as 时间 from 表 group by 姓名) b
    where a.姓名=b.姓名 and a.时间=b.时间 and datename(hour,getdate())<=12 
    union 
    select a.* 
    from  表 a,(select 姓名,min(时间) as 时间 from 表 group by 姓名) b
    where a.姓名=b.姓名 and a.时间=b.时间 and datename(hour,getdate())>12
      

  5.   

    select * from 
    (select 編號,姓名,班別 ,min(時間) as 時間 from tb where 班別='上班签到' group by 編號,姓名,班別 
    union all
    select 編號,姓名,班別 ,min(時間) as 時間 from tb where 班別='下班签到' group by 編號,姓名,班別)a
     order by 編號,時間