Tengo una tabla que tiene este aspecto:SQL Mostrar el registro más reciente en GROUP BY?
id | SubjectCode | Grade | DateApproved | StudentId
1 SUB123 1.25 1/4/2012 2012-12345
2 SUB123 2.00 1/5/2012 2012-12345
3 SUB123 3.00 1/5/2012 2012-98765
Estoy intentando GROUP BY SubjectCode pero me gustaría que se muestre la más reciente DateApproved por lo que se verá así:
id | SubjectCode | Grade | DateApproved | StudentId
2 SUB123 2.00 1/5/2012 2012-12345
3 SUB123 3.00 1/5/2012 2012-98765
Estoy un poco perdido en cómo hacerlo?
EDIT:
Ok chicos ahora estoy en mi PC real, lo siento por la pregunta mal construido.
Aquí es lo que estoy tratando de hacer realidad:
SELECT GD.GradebookDetailId, G.SubjectCode, G.Description, G.UnitsAcademic, G.UnitsNonAcademic,
GD.Grade, GD.Remarks, G.FacultyName, STR_TO_DATE(G.DateApproved, '%m/%d/%Y %h:%i:%s') AS 'DateAproved'
FROM gradebookdetail GD INNER JOIN gradebook G ON GD.GradebookId=G.GradebookId
WHERE G.DateApproved IS NOT NULL AND G.GradebookType='final' AND StudentIdNumber='2012-12345'
GROUP BY <?????>
ORDER BY G.SubjectCode ASC
Básicamente, sólo quiero mostrar el más reciente "DateApprove" de un "SubjectCode", por lo que no reciben múltiples entradas .
que realmente desea agrupar por StudentId. La forma de hacerlo es seleccionar max (DateApproved). (Suponiendo que DateApproved es un campo de fecha) –
Ok, DateApproved es un VARCHAR, ¿funcionará esto: MAX (STR_TO_DATE (DateApproved, '% d% m% y'))? –
Hmm. Vale la pena intentarlo, supongo. Tendrás que probarlo y ver. No estoy muy familiarizado con la sintaxis de mysql. –