Hai Michale ,

Thanks

Will try to do this .

Regards
binu


On 11/10/08, Michael Moore <[EMAIL PROTECTED]> wrote:
>
> 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 [email protected]
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