游标的使用,大虾们进来看看那!!
表结构如下:
部门 时间
----------
部门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”。
跪谢!!!!!!!!!!
------解决方案--------------------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