本帖最后由 linjimu 于 2013-05-23 17:36:38 编辑

解决方案 »

  1.   


    declare @t table( id int,RecordTime datetime)
    insert into @t 
    select 1,'2013-05-01 8:01' union all
    select 2,'2013-05-01 9:30' union all
    select 3,'2013-05-01 10:02' union all
    select 4,'2013-05-01 11:23';with a as(
    select top 100 percent a.id,a.RecordTime,
           (select top 1 RecordTime from @t B where id<a.id order by id desc ) RecordTime_p
    from @t A
    order by id 
    )
    select top 1 RecordTime_p TimeFrom,RecordTime TimeTo,datediff(minute,RecordTime_p,RecordTime) IntMaxTime 
    from a
    order by IntMaxTime desc 
      

  2.   

    SELECT TOP 1 *,DATEDIFF(mi,a.[RecordTime],b.[RecordTime]) AS df FROM #tb a, #tb b
    WHERE a.id=b.id-1
    ORDER BY  df DESC 这样可以吗?恐怕你的id不连续
      

  3.   

    2005 用 row_number 生成连续的id 就可以了
    --> 测试数据:#tb
    IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tb
    GO 
    CREATE TABLE #tb([id] INT,[RecordTime] DATETIME)
    INSERT #tb
    SELECT 1,'2013-05-01 8:01' UNION ALL
    SELECT 3,'2013-05-01 9:30' UNION ALL
    SELECT 5,'2013-05-01 10:02' UNION ALL
    SELECT 9,'2013-05-01 11:23'
    --------------开始查询--------------------------
    ;WITH cte AS
    (
    SELECT  *,row_id=ROW_NUMBER() OVER(ORDER BY [id]) FROM #tb 
    )
    SELECT TOP 1 a.*,DATEDIFF(mi,a.[RecordTime],b.[RecordTime]) AS df FROM cte a, cte b
    WHERE a.row_id=b.row_id-1
    ORDER BY  df DESC 
    ----------------结果----------------------------
    /* 
    id RecordTime row_id df
    1 2013-05-01 08:01:00.000 1 89
    */
      

  4.   

    row_number 里面用时间那一列排序 
    生成一个id出来。
      

  5.   

    谢谢5楼的,我在4楼回帖是,只有看到1楼的,所以。
    看到你3楼的回复,我知道可以用recordTime来做ID了。
      

  6.   


    declare @t table

    id int,
    RecordTime datetime

    insert into @t  
    select 1,'2013-05-01 8:01' union all
    select 2,'2013-05-01 9:30' union all
    select 3,'2013-05-01 10:02' union all
    select 4,'2013-05-01 11:23' 
    select top 1 a.RecordTime as TimeFrom,b.RecordTime as TimeTo,
    datediff(minute,a.RecordTime,b.RecordTime)maxtime
    from @t a,@t b where a.id+1 = b.id 
    order by datediff(minute,a.RecordTime,b.RecordTime) desc
      

  7.   

    总问题是这样的:
    1:从一个表读取几个记录,记录包含一个已经定义好的时间段A-B。
    如:8:00-9:00  12:00-13:00  17:00-18:00
    2:再根据这些时间段A-B找出一个人相关的记录集(也就是上面的RecordTime )
    如找出8:00-9:00出现的记录集
    3:再处理这些记录集分析最大相隔时间长度,更新到另外一个表里面。
    想用一个存储过程,比较难。大家帮忙一下,存储过程的主要结构!
    谢谢!