有数据如下:
      时间                  姓名
2010-06-28 08:44:41.000      AA
2010-06-28 09:44:41.000      AA
2010-06-28 10:44:41.000      AA
2010-06-28 18:09:48.000      AA
2010-06-28 18:48:28.000      AA
........
等等 数据  
请问高手 我如何可以判断某一天最早的时间和最晚的时间。
结果如下:   时间         姓名          最早时间         最晚时间
2010-06-28       AA             08:44           18:48请高手指点!!!!

解决方案 »

  1.   

    /*
     [Author]: OrchidCat[OC]_轻骑兵(向高手学习...)
       [Time]: 2010-07-12 09:34:11
      [Place]: From Beijing
    [Version]: 
        Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) 
    Feb  9 2007 22:47:07 
    Copyright (c) 1988-2005 Microsoft Corporation
    Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2)*/
    --> 测试数据:[TB]
    if object_id('[TB]') is not null drop table [TB]
    create table [TB]([时间] datetime,[姓名] varchar(2))
    insert [TB]
    select '2010-06-28 08:44:41.000','AA' union all
    select '2010-06-28 09:44:41.000','AA' union all
    select '2010-06-28 10:44:41.000','AA' union all
    select '2010-06-28 18:09:48.000','AA' union all
    select '2010-06-28 18:48:28.000','AA'select * from [TB]SELECT 
    [日期]= CONVERT(VARCHAR(10),[时间],120),
    [姓名],
    [1]=MIN(CONVERT(VARCHAR(10),[时间],108)),
    [2]=Max(CONVERT(VARCHAR(10),[时间],108))
    FROM [dbo].[TB]
    GROUP BY CONVERT(VARCHAR(10),[时间],120),
    [姓名]/*
    日期         姓名   1          2
    ---------- ---- ---------- ----------
    2010-06-28 AA   08:44:41   18:48:28(1 行受影响)
    */
      

  2.   

    --> 测试数据: @tb
    declare @tb table (时间 datetime,姓名 varchar(2))
    insert into @tb
    select '2010-06-28 08:44:41.000','AA' union all
    select '2010-06-28 09:44:41.000','AA' union all
    select '2010-06-28 10:44:41.000','AA' union all
    select '2010-06-28 18:09:48.000','AA' union all
    select '2010-06-28 18:48:28.000','AA'
    select convert(varchar(10),时间,120)时间,
           姓名,
           min(convert(varchar(5),时间,108))最早时间, 
           max(convert(varchar(5),时间,108))最晚时间
    from @tb
    group by convert(varchar(10),时间,120),姓名
    /*
    (5 行受影响)
    时间         姓名   最早时间  最晚时间
    ---------- ---- ----- -----
    2010-06-28 AA   08:44 18:48(1 行受影响)
    */
      

  3.   

    select convert(varchar(10),时间,120)时间,姓名,
    min(convert(varchar(5),时间,14)) 最早时间,
    max(convert(varchar(5),时间,14)) 最晚时间
    from tb
    group by convert(varchar(10),时间,120),姓名
      

  4.   

    SELECT CONVERT(VARCHAR(10),[时间],120),[姓名],CONVERT(VARCHAR(10),MIN([时间]),108),CONVERT(VARCHAR(10),MAX([时间]),108)
    FROM TB
    GROUP BY CONVERT(VARCHAR(10),[时间],120),[姓名]
      

  5.   

    --> 测试数据: [tw]
    if object_id('[tw]') is not null drop table [tw]
    go
    create table [tw] (时间 datetime,姓名 varchar(2))
    insert into [tw]
    select '2010-06-28 08:44:41.000','AA' union all
    select '2010-06-28 09:44:41.000','AA' union all
    select '2010-06-28 10:44:41.000','AA' union all
    select '2010-06-28 18:09:48.000','AA' union all
    select '2010-06-28 18:48:28.000','AA'select distinct 姓名,
    a=(select top 1 时间 from tw where 姓名=t.姓名 order by 时间 desc ), 
    b=(select top 1 时间 from tw where 姓名=t.姓名 order by 时间 asc ) 
    from [tw] t姓名   a                       b
    ---- ----------------------- -----------------------
    AA   2010-06-28 18:48:28.000 2010-06-28 08:44:41.000(1 行受影响)