Hai Mike , Thanks the help . With the help of u r query and some pl/sql statement I completed my work .
Using this query , i am getting the following output . 01-NOV-08 Leave 02-NOV-08 Leave 03-NOV-08 Leave 04-NOV-08 Leave 05-NOV-08 working 06-NOV-08 working 07-NOV-08 working 08-NOV-08 working 09-NOV-08 Leave 10-NOV-08 Leave 11-NOV-08 Leave 12-NOV-08 Leave 13-NOV-08 Leave 14-NOV-08 Leave 15-NOV-08 working 16-NOV-08 working 17-NOV-08 working 18-NOV-08 working 19-NOV-08 working 20-NOV-08 working 21-NOV-08 working 22-NOV-08 working 23-NOV-08 working 24-NOV-08 working 25-NOV-08 working 26-NOV-08 working 27-NOV-08 Leave 28-NOV-08 Leave 29-NOV-08 Leave 30-NOV-08 Leave How can I format this into the following way . 01-NOV-08 04-NOV-08 Leave 05-NOV-08 08-NOV-08 working 09-NOV-08 14-NOV-08 Leave 15-NOV-08 26-NOV-08 working 27-NOV-08 30-NOV-08 Leave Any of the analytic function can be used ? Thanks Binu On 11/5/08, Michael Moore <[EMAIL PROTECTED]> wrote: > > This should give you enough to complete the job. If not, let me know and > we'll take it to the next step. Obviously, you can replace the hard coded > dates with PL/SQL variables. > -- Mike -- > > CREATE TABLE date_ranges (start_date DATE, > end_date DATE); > > INSERT INTO date_ranges VALUES (TO_DATE('28/10/08', 'DD/MM/YY'), > TO_DATE('04/11/08', 'DD/MM/YY')); > INSERT INTO date_ranges VALUES (TO_DATE('09/11/08', 'DD/MM/YY'), > TO_DATE('14/11/08', 'DD/MM/YY')); > INSERT INTO date_ranges VALUES (TO_DATE('27/11/08', 'DD/MM/YY'), > TO_DATE('03/12/08', 'DD/MM/YY')); > commit; > > SELECT day_date, nvl2(start_date,'Leave','working') wk_or_lv > FROM (SELECT TO_DATE ('20081101', 'yyyymmdd') + LEVEL - 1 day_date > FROM DUAL > CONNECT BY LEVEL <= > TO_NUMBER (TO_CHAR (LAST_DAY (TO_DATE ('20081101', > 'yyyymmdd')), > 'DD'))) gen > LEFT OUTER JOIN > date_ranges ON (day_date BETWEEN start_date AND end_date) > ; > > On Tue, Nov 4, 2008 at 9:30 AM, Binu K S <[EMAIL PROTECTED]> wrote: > >> Hai , >> this is not a report. This for salary calculation. For example an employee >> is taken leave twice in a month , eg first time it is emergency leave and >> another time it is sick leave . The employee taken Emergency leave from >> 10-nov-2008 - 15-nov-2008 and sick leave from 20-nov-2008 to 23-nov-2008 . >> The remaing days he is present for work . So when the salry for the month of >> November is preparing there will be five records . >> >> 1 from 1-nov-2008 to 9-nov-2008 >> 2 from 10-nov-2008 t0 15-nov-2008 (Leave ) >> 3 from 16-nov-2008 to 19-nov-2008 >> 4 from 20-nov-2008 to 23-nov-2008 (Leave ) >> 5 from 24-nov-2008 to 30-Nov-2008 >> >> Then the salary will be calculated based on these period . The calculation >> of allowance during the leave period is based on lots parameter . The >> information available at present is the leave details . If there is no >> information available in the leave table , then the employee is present in >> the work . >> >> Regards >> Binu >> >> >> On 11/4/08, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: >>> >>> >>> >>> >>> On Nov 3, 11:16 pm, "Binu K S" <[EMAIL PROTECTED]> wrote: >>> > Hai, >>> > >>> > I am working in an HR project . I have one table which store leave >>> > information . The main fields are >>> > >>> > Leave_code , Employee_code , Leave_type , From_date , To_date >>> > >>> > Here Leave Code is the primary key of the table . >>> > Employee Code is the employee Number . >>> > Leave Type is the type of leave . Numeric field refering to master >>> table >>> > which contain different type of leave . Eg 1 - Annual Leave , 2 - Sick >>> > Leave >>> > 3 Emergency leave . >>> > From Date and To Date are the leave starting date and leave end date . >>> > >>> > For Example I have the following data in the leave table >>> > >>> > Leave_Code Employee_Code Leave_Type From_Date >>> To_Date >>> > >>> ----------------------------------------------------------------------------- >>> > 1 2050 2 >>> > 10-Nov-2008 15-Nov-2008 >>> > 2 2050 3 >>> > 20-Nov-2008 25-Nov-2008 >>> > >>> > When I am preparing salary for the Month Of November i need to split >>> the >>> > date as follows >>> > >>> > 01-Nov-2008 to 09 -Nov-2008 Working >>> > 10-Nov-2008 to 15-Nov-2008 Leave ( Sick Leave ) >>> > 16-Nov-2008 to 19-Nov-2008 Working >>> > 20-Nov-2008 to 25-Nov-2008 Leave(Emergency Leave) >>> > 26-Nov-2008 to 30-Nov-2008 Working >>> > >>> > While spliting the date we need to consider following cases also . >>> > >>> > 1 Leave may start in the previous month and end in the current month . >>> For >>> > example the leave can start from 28-OCT-2008 and Ends on 5 - Nov - >>> > >>> > 2008 . In that case the out put must be >>> > >>> > 1-nov-2008 to 5-Nov-2008 Leave >>> > 6-Nov-2008 to 30-Nov-2008 Office . >>> > >>> > Similarly the leave can start in the current month and ends in the next >>> > month .For example the leave can start from 25-nov-2008 and Ends on 10 >>> - >>> > >>> > dec - 2008 . In that case the out put must be >>> > >>> > 1-nov-2008 to 24-Nov-2008 Office >>> > 25-Nov-2008 to 30-Nov-2008 Leave >>> > >>> > U can use PL/SQL >>> > >>> > Hope I will get Help From u people >>> > >>> > Thanks >>> > Regards >>> > Binu >>> >>> This entire report is generated from this one table of data? What >>> have you tried to solve this? >>> >>> >>> David Fitzjarrell >>> >>> >>> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Oracle PL/SQL" group. To post to this group, send email to Oracle-PLSQL@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/Oracle-PLSQL?hl=en -~----------~----~----~----~------~----~------~--~---