Re: Query to get Most Recent records
- From: Sreejith S Nair <Sreejith.Sreekantan@xxxxxxxxxx>
- To: Stephane Faroult <sfaroult@xxxxxxxxxxxx>
- Date: Mon, 25 Oct 2010 14:52:07 +0530
Hi , Thanks for the hint.
Just a small question and clarification.
The table in the example is just a sample table( I am not storing age)
I cannot do an equality on records after selecting the most recent time
stamp, since all the five records created are on different timestamp.
I think I was not very clear on my previous mail,
I would like to see the data - not for the record with most recent date,
but with the changed value over the period of time. For eg: In my example,
if you check the address , it got changed on 2nd and 5th and 6th. Age also
got changed on 3rd and 4th. I would like to get the latest value for each
column. In this case the latest value may not be the one stored against
most recenct timestamp .
Hope I made the situation clear now.
Thank You,
Kind Regards,
Sreejith Nair
From: Stephane Faroult <sfaroult@xxxxxxxxxxxx>
To: Sreejith.Sreekantan@xxxxxxxxxx
Cc: oracle-l@xxxxxxxxxxxxx
Date: 10/25/2010 02:46 PM
Subject: Re: Query to get Most Recent records
Yes, it is possible.
Hint : first return for each person the most recent timestamp (you are on
good tracks when you mention analytic functions) with the remainder of the
data, then select the rows for which the timestamp is equal to this most
recent timestamp. There are otherways to do it, you can also number the
records per person in decreasing order of timestamp and only return those
with number 1, for instance.
Storing the age is a bad idea. Birth dates need fewer updates and allows
you to compute the age.
HTH
Stephane Faroult
RoughSea Ltd
Konagora
RoughSea Channel on Youtube
On 10/25/2010 11:07 AM, Sreejith S Nair wrote:
Hi listmembers,
I am trying to write a query using analytic functions to get a query
result as follows
PERS_ID AGE SEX ADDRESS TMSTMP
1 12 M TVM 1/1/2010
1 EKM 2/1/2010
1 13 3/1/2010
1 14 4/1/2010
1 BOM 5/1/2010
1 LHR 6/1/2010
2 12 F TVM 1/1/2010
2 LHR 2/1/2010
2 13 3/1/2010
2 14 4/1/2010
2 PUR 5/1/2010
2 DEL 6/1/2010
The concept is that the initial record, with all columns populated(record
created on 1/1/2010) will get changed over a time period, and changed
values are stored in this fashion. I would like to retrieve the latest
value of records for this person / a record which is less than a date, say
6/1/2010.
I would like to see the records as
PERS_ID AGE SEX ADDRESS TMSTMP
1 14 M BOM 5/1/2010
2 14 F PUR 5/1/2010
Will it be possible to write these as a single query ? Please advice
Thank You,
Kind Regards,
Sreejith Nair
DISCLAIMER:
"The information in this e-mail and any attachment is intended only for
the person to whom it is addressed and may contain confidential and/or
privileged material. If you have received this e-mail in error, kindly
contact the sender and destroy all copies of the original communication.
IBS makes no warranty, express or implied, nor guarantees the accuracy,
adequacy or completeness of the information contained in this email or any
attachment and is not liable for any errors, defects, omissions, viruses
or for resultant loss or damage, if any, direct or indirect."
DISCLAIMER:
"The information in this e-mail and any attachment is intended only for
the person to whom it is addressed and may contain confidential and/or
privileged material. If you have received this e-mail in error, kindly
contact the sender and destroy all copies of the original communication.
IBS makes no warranty, express or implied, nor guarantees the accuracy,
adequacy or completeness of the information contained in this email or any
attachment and is not liable for any errors, defects, omissions, viruses
or for resultant loss or damage, if any, direct or indirect."
Other related posts: