yes, you can use an analytic function and take the first and last value in
the partition.
The partition will be by (working_leave) order by mydate
I'll show you tomorrow if I have time or you have not worked it out by then.
I encourage you to take a try at it.

It will look something like

select first_value(mydate) partition by working_leave order by mydate
        ,last_value(mydate) partition by working_leave order by mydate
        ,working_leave
FROM ( your entire previously written select statement goes here) ;


Regards,
Mike

On Sun, Nov 9, 2008 at 8:09 AM, Binu K S <[EMAIL PROTECTED]> wrote:

> 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to