Trying it the second time (first time didn't go through because of "over-quoting"). Is this what you are looking for: WITH aggr AS (SELECT message, min(created_time) min_time FROM joe GROUP BY message) SELECT j.* FROM joe j, aggr WHERE j.message = aggr.message AND j.created_time = aggr.min_time; ? Regards, Igor Neyman On Wed, Dec 21, 2011 at 1:38 PM, Sweetser, Joe <JSweetser@xxxxxxxx> wrote: > I don't think this should be as hard as I am making it. I want to select > the earlier of all records that have the same message. There is a bit of > extraneous data in here but I'm lazy and it was easier to leave it in so my > apologies for that. I hope this formats ok. > CREATE TABLE "JOE" ( "ID_ACTIVITY" NUMBER(10), > "CREATED_USERNAME" VARCHAR2(100), > "OWNER_USERID" VARCHAR2(100), > "CREATED_TIME" TIMESTAMP(6), > "CATAGORY" VARCHAR2(8), > "MESSAGE" VARCHAR2(2000)); > > > So, I am looking for a statement that would return rows 1, 3, 5, and 7. I > have tried various things with min(created_time) but that is too limiting > since I only get one row (duh). > > Any/all pointers/tips welcome. > > thanks, > -joe > > -- //www.freelists.org/webpage/oracle-l