假设我有一张表其中有三个字段1,2,3(1为数据,2为数据出去的时间,3为数据回来的时间)
其中1中的字段可以是相同的
举个例子来说:
1       2    3
10001 10:10 10:20
10001 10:25 11:25
10001 10:45 12:00
x     
.................
现在要求展示的是
1  4  5  6 7 8 9 其中(4.5.6.7.8.9)都是没有的字段,4是1中x出去最早的时间;
5是x回来最早的时间;6是x出去最迟的时间;7是x回来最迟的时间;8是4和5之间的时间差以分钟记;
9是6和7之间的时间差以分钟记;

1       4       5       6      7       8     9
10001   10:10   10:20   10:45  12:00   10    75
可以再建张临时表存放这些记录
现在我该怎么把这些数据取出来呢?~~~~
求教中!~~~~

解决方案 »

  1.   

    --> Test Data: @T
    declare @T table ([1] int,[2] varchar(10),[3] varchar(10))
    insert into @T
    select 10001,'10:10','10:20' union all
    select 10001,'10:25','11:25' union all
    select 10001,'10:45','12:00'select * from @T
    --Code
    select [1],
    [4]=MIN([2]),
    [5]=MIN([3]),
    [6]=Max([2]),
    [7]=Max([3]),
    [8]=DATEDIFF(mi,MIN([2]),MIN([3])),
    [9]=DATEDIFF(mi,max([2]),max([3]))
    from @T group by [1]--Result
    /*
    1           4          5          6          7          8           9
    ----------- ---------- ---------- ---------- ---------- ----------- -----------
    10001       10:10      10:20      10:45      12:00      10          75
    */
      

  2.   


    select col1,min(col2) col4,min(col3) col5,max(col2) col6,max(col3) col7
    datediff(n,cast(min(col2) as datetime),cast(min(col3) as datetime)) col8, 
    datediff(n,cast(max(col2) as datetime),cast(max(col3) as datetime)) col9 
    from tb group by col1
      

  3.   

    谢谢!~~我已经做出来了!~~我也把我写的贴出来SELECT YDANCODE, DPTNAME, DPTCODE, I_E_DATE, 审核开始时间, 接收开始时间, 
          审核结束时间, 接收最后时间, number, DATEDIFF(n, 审核结束时间, 接收最后时间) 
          AS date1, DATEDIFF(n, 审核开始时间, 接收开始时间) AS date2
    FROM (SELECT IMEDITAB.YDANCODE, DPTTAB.DPTNAME, IMEDITAB.DPTCODE, 
                  IMEDITAB.I_E_DATE, MAX(IMEDITAB.ETRTM) AS 接收最后时间, 
                  MAX(IMEDITAB.CMDTM) AS 审核结束时间, MIN(IMEDITAB.ETRTM) 
                  AS 接收开始时间, MIN(IMEDITAB.CMDTM) AS 审核开始时间, 
                  COUNT(IMEDITAB.YDANCODE) AS number
            FROM IMEDITAB LEFT OUTER JOIN
                  DPTTAB ON IMEDITAB.DPTCODE = DPTTAB.DPTCODE
            GROUP BY IMEDITAB.YDANCODE, IMEDITAB.DPTCODE, IMEDITAB.I_E_DATE, 
                  DPTTAB.DPTNAME) DERIVEDTBL
    ORDER BY I_E_DATE DESC
    我做了两次查询,没有再建一张临时表!现在需要做的把两个时差,date1,date2给它格式化下,这样看起来更舒服,一眼就可以知道
    是间隔了多少分钟多少小时,这个问题还要请教下大家!~~~