I currently have a table that records employee activity within a department. For simplicity let's assume that all the event types are either 'A' (active) or 'I' (inactive). Chronologically, for the same employee, an event of type 'A' can be either followed by a 'I' or by nothing. What I need to do is capture the events in pairs via a single query if possible, but I can't come up with it right now.
Example script data.
create table emp_activity
(
dept_id number,
emp_id number,
dt date,
activity char(1)
);
insert into emp_activity(dept_id,emp_i
d,dt,activ
ity) values(15, 973, to_Date('23-AUG-07 12.00.00 AM', 'DD-MON-RR HH12.MI.SS AM'), 'A');
insert into emp_activity(dept_id,emp_i
d,dt,activ
ity) values(15, 973, to_Date('12-APR-07 12.00.00 AM', 'DD-MON-RR HH12.MI.SS AM'), 'I');
insert into emp_activity(dept_id,emp_i
d,dt,activ
ity) values(15, 973, to_Date('02-OCT-06 12.00.00 AM', 'DD-MON-RR HH12.MI.SS AM'), 'A');
in this case, the result should be
dept | emp | start_date | end_date
--------------------------
----------
----
15 | 973 | 23-AUG-07 | null
15 | 973 | 02-OCT-06 | 12-APR-07
insert into emp_activity(dept_id,emp_i
d,dt,activ
ity) values(10, 100, to_Date('16-AUG-01 12.00.00 AM', 'DD-MON-RR HH12.MI.SS AM'), 'A');
insert into emp_activity(dept_id,emp_i
d,dt,activ
ity) values(10, 100, to_Date('25-APR-03 12.00.00 AM', 'DD-MON-RR HH12.MI.SS AM'), 'I');
insert into emp_activity(dept_id,emp_i
d,dt,activ
ity) values(10, 100, to_Date('30-JUL-07 12.00.00 AM', 'DD-MON-RR HH12.MI.SS AM'), 'A');
insert into emp_activity(dept_id,emp_i
d,dt,activ
ity) values(10, 100, to_Date('22-AUG-07 11.08.54 AM', 'DD-MON-RR HH12.MI.SS AM'), 'I');
insert into emp_activity(dept_id,emp_i
d,dt,activ
ity) values(10, 100, to_Date('22-AUG-07 11.35.00 AM', 'DD-MON-RR HH12.MI.SS AM'), 'A');
insert into emp_activity(dept_id,emp_i
d,dt,activ
ity) values(10, 100, to_Date('22-AUG-07 12.00.00 AM', 'DD-MON-RR HH12.MI.SS AM'), 'I');
in this case, the result should be
dept | emp | start_date | end_date
--------------------------
----------
----
10 | 100 | 22-AUG-07 | 22-AUG-07
10 | 100 | 30-JUL-07 | 22-AUG-07
10 | 100 | 16-AUG-01 | 25-APR-03
(ignoring date/time formatting for clarity)
Start Free Trial