Given a database table where multiple rows have the same values and only the most recent record is to be returned

Posted by Jim Lahman on Geeks with Blogs See other posts from Geeks with Blogs or by Jim Lahman
Published on Mon, 03 Jan 2011 21:09:25 GMT Indexed on 2011/01/03 21:54 UTC
Read the original article Hit count: 324

Filed under:

I have a table where there are multiple records with the same value but varying creation dates.  A sample of the database columns is shown here:

 

   1:    select lot_num, to_char(creation_dts,'DD-MON-YYYY HH24:MI:SS') as creation_date 
   2:    from coil_setup 
   3:    order by lot_num
 

LOT_NUM                        CREATION_DATE       
------------------------------ --------------------
1435718.002                    24-NOV-2010 11:45:54
1440026.002                    17-NOV-2010 06:50:16
1440026.002                    08-NOV-2010 23:28:24
1526564.002                    01-DEC-2010 13:14:04
1526564.002                    08-NOV-2010 22:39:01
1526564.002                    01-NOV-2010 17:04:30
1605920.003                    29-DEC-2010 10:01:24
1945352.003                    14-DEC-2010 01:50:37
1945352.003                    09-DEC-2010 04:44:22
1952718.002                    25-OCT-2010 09:33:19
1953866.002                    20-OCT-2010 18:38:31
1953866.002                    18-OCT-2010 16:15:25

 

Notice that there are multiple instances of of the same lot number as shown in bold.

To only return the most recent instance, issue this SQL statement:

   1:  select lot_num, to_char(creation_date,'DD-MON-YYYY HH24:MI:SS') as creation_date 
   2:  from
   3:  (
   4:    select rownum r, lot_num, max(creation_dts) as creation_date
   5:    from coil_setup group by rownum, lot_num
   6:    order by lot_num
   7:  )
   8:  where r < 100
 

LOT_NUM                        CREATION_DATE       
------------------------------ --------------------
2019416.002                    01-JUL-2010 00:01:24
2022336.003                    06-OCT-2010 15:25:01
2067230.002                    01-JUL-2010 00:36:48
2093114.003                    02-JUL-2010 20:10:51
2093982.002                    02-JUL-2010 14:46:11
2093984.002                    02-JUL-2010 14:43:18
2094466.003                    02-JUL-2010 20:04:48
2101074.003                    11-JUL-2010 09:02:16
2103746.002                    02-JUL-2010 15:07:48
2103758.003                    11-JUL-2010 09:02:13
2104636.002                    02-JUL-2010 15:11:25
2106688.003                    02-JUL-2010 13:55:27
2106882.003                    02-JUL-2010 13:48:47
2107258.002                    02-JUL-2010 12:59:48
2109372.003                    02-JUL-2010 20:49:12
2110182.003                    02-JUL-2010 19:59:19
2110184.003                    02-JUL-2010 20:01:03

© Geeks with Blogs or respective owner