Jay, December 06, 2012 - 7:54 am UTC
Hi Tom,
I am trying to use your query in one of my scenerio's on a table which has the date ranges. However the query runs fine and produces correct results only for 2 or 3 records. For any more than 3 records, the query takes very long and gets stuck.. any thoughts?...
thanks
Jay
query
------
select distinct level r,full_name,assignment_number,sdate,edate,
greatest( add_months(trunc(sdate,'mm'),level-1), sdate ) period_start,
least( last_day( add_months(sdate,level-1) ), edate ) period_end
from (select to_date( decode(to_char(effective_start_date,'RRRR'), '2011', '1-JAN-2012', '2010', '1-JAN-2012', effective_start_date), 'dd-mon-RRRR' ) sdate,
to_date( decode(effective_end_date, '31-DEC-4712', '31-DEC-2012', effective_end_date), 'dd-mon-RRRR' ) edate, full_name, assignment_number
from test_pen_slice
)
connect by level <= months_between( trunc( edate,'mm'), trunc(sdate,'mm') ) + 1
order by 2,5
sample table .. 5 records
--------------------------
SET DEFINE OFF;
Insert into TEST_PEN_SLICE
(FULL_NAME, ASSIGNMENT_NUMBER, EFFECTIVE_START_DATE, EFFECTIVE_END_DATE)
Values
('ABAYASEKARA, Mr. Mohan', '60', TO_DATE('04/01/2012 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('12/31/4712 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into TEST_PEN_SLICE
(FULL_NAME, ASSIGNMENT_NUMBER, EFFECTIVE_START_DATE, EFFECTIVE_END_DATE)
Values
('ABAYASEKARA, Mr. Mohan', '60', TO_DATE('06/01/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('03/31/2012 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into TEST_PEN_SLICE
(FULL_NAME, ASSIGNMENT_NUMBER, EFFECTIVE_START_DATE, EFFECTIVE_END_DATE)
Values
('ABD ELSAID, Mr. Mohamed M.', '409', TO_DATE('01/01/2012 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('12/31/4712 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into TEST_PEN_SLICE
(FULL_NAME, ASSIGNMENT_NUMBER, EFFECTIVE_START_DATE, EFFECTIVE_END_DATE)
Values
('ABRATE, Mr. Tommaso', '62', TO_DATE('08/01/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('12/31/4712 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
Insert into TEST_PEN_SLICE
(FULL_NAME, ASSIGNMENT_NUMBER, EFFECTIVE_START_DATE, EFFECTIVE_END_DATE)
Values
('ABU EL HASSAN, Mr. Hashim', '63', TO_DATE('06/01/2011 00:00:00', 'MM/DD/YYYY HH24:MI:SS'), TO_DATE('12/31/4712 00:00:00', 'MM/DD/YYYY HH24:MI:SS'));
COMMIT;
December 14, 2012 - 2:04 pm UTC
how about a create table?
does this example you posted "get stuck"???
have you traced this?