|
|
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
|
|
|
|
|