Question : SQL QUERY most recent date for a person_id returning all rows

Hi Guys
I've tried for days to figure this problem out
Any help would be great.

I want the query to retrieve the most recent for each person_id along with all information contained within the row.

EXAMPLE TABLE
auto_id  person_id   grade_id   grade_date
1          1           1         12/12/2003
2          2           1         12/06/2003
3          2           2         12/07/2003
4          1           2         12/01/2004
5          1           3         24/03/2004

THE RESULTS SET I WANT IS:-
auto_id  person_id   grade_id   grade_date
3          2           2         12/07/2003
5          1           3         24/03/2004

I HAVE TRIED QUERIES

SELECT person_id, MAX(grade_date)
FROM grade_history
GROUP BY person_id
//But that only gives me two columns i need the whole row

SELECT person_id, grade_id, grade_date
FROM grade_history
WHERE grade_date=(SELECT MAX(grade_date)
              FROM grade_history);

//But that only gives me one result set of the most recent date NOT the most recent date for a person_id

IF you could shed any light on this problem it would be most welcome.


Chad

Answer : SQL QUERY most recent date for a person_id returning all rows

Fixing a cut/paste error:

SELECT gh.*
FROM grade_history gh
INNER JOIN (
 SELECT person_id, MAX(grade_date) as grade_date
 FROM grade_history
 GROUP BY person_id
) m ON gh.grade_date = m.grade_date AND gh.person_id = m.person_id


And the non-ANSI syntax:

SELECT gh.*
FROM grade_history gh,
( SELECT person_id, MAX(grade_date) as grade_date
 FROM grade_history
 GROUP BY person_id
) m
WHERE gh.grade_date = m.grade_date AND gh.person_id = m.person_id
Random Solutions  
 
programming4us programming4us