表结构如下:
部门      时间
----------
部门1  时间1
部门1  时间2
部门1  时间3
部门1  时间4
部门2  时间5
部门2  时间6
部门2  时间7
部门2  时间8
部门3  时间9
部门3  时间10
部门3  时间11
部门3  时间12
部门1  时间13
部门1  时间14
部门1  时间15
部门1  时间16我要求出每个部门的时间之差。比如部门2的时间差是“时间8 - 时间5”,但是部门1的时间差有两个“时间16 - 时间13”;“时间4 - 时间1”。
跪谢!!!!!!!!!!

解决方案 »

  1.   

    你这个需求有点问题啦!求单一部门两个时间差一条语句可以解决阿select max(时间)-min(时间) from table where 部门=‘部门编号’
      

  2.   

    sorry!你说的部门一有两个存储段 但是这样组织数据无法区分阿
      

  3.   

    create table test 
    (t_name varchar2(10),
    t_time  date);insert into test
    select '部门1',sysdate + 1/24 from dual;
    insert into test
    select '部门1',sysdate + 2/24 from dual;
    insert into test
    select '部门1',sysdate + 3/24 from dual;
    insert into test
    select '部门1',sysdate + 4/24 from dual;
    insert into test
    select '部门2',sysdate + 5/24 from dual;
    insert into test
    select '部门2',sysdate + 6/24 from dual;
    insert into test
    select '部门2',sysdate + 7/24 from dual;
    insert into test
    select '部门2',sysdate + 8/24 from dual;
    insert into test
    select '部门3',sysdate + 9/24 from dual;
    insert into test
    select '部门3',sysdate + 10/24 from dual;
    insert into test
    select '部门3',sysdate + 11/24 from dual;
    insert into test
    select '部门3',sysdate + 12/24 from dual;
    insert into test
    select '部门1',sysdate + 13/24 from dual;
    insert into test
    select '部门1',sysdate + 14/24 from dual;
    insert into test
    select '部门1',sysdate + 15/24 from dual;
    insert into test
    select '部门1',sysdate + 16/24 from dual;
    commit;
    select c_id,t_name,max(t_time) - min(t_time) from
    (select c.id - rownum c_id,t_time,t_name  from (select b.id ,b.t_name,b.t_time  from 
    (select rownum id,a.* from test a order by a.t_time) b
    order by t_name,id) c)
    group by  c_id,t_name
      

  4.   

    to yuyu1980():刚刚验证了你的sql。你的算法是徒劳的,直接在我的原始表上group by t_name就可以得到你的结果。不过还是谢谢你>
      

  5.   

    klep(klep) ( )
    直接group by t_name只有一行部门1,我那个有两个部门1
    result
    1 -4 部门2 0.125
    2 -4 部门3 0.125
    3 0 部门1 0.125
    4 8 部门1 0.125
      

  6.   

    理解错了
    这个应该是你要的
    select c_id,t_name,max(t_time) from
    (select c.id - rownum c_id,t_time,t_name  from (select b.id ,b.t_name,b.t_time  from 
    (select rownum id,a.* from test a order by a.t_time) b
    order by t_name,id) c)
    group by  c_id,t_name
    union
    select c_id,t_name,min(t_time) from
    (select c.id - rownum c_id,t_time,t_name  from (select b.id ,b.t_name,b.t_time  from 
    (select rownum id,a.* from test a order by a.t_time) b
    order by t_name,id) c)
    group by  c_id,t_name
      

  7.   

    yuyu1980() ( )  高手啊
      

  8.   

    我弄错了。结贴!!yuyu1980() 佩服你!!
      

  9.   

    yuyu1980() 你的msn能告诉我么?我的是[email protected],能交个朋友么?