Mam tabeli, który wygląda tak:SQL Wyświetl najnowszy rekord w 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
Próbuję GROUP BY SubjectCode ale chciałbym go do wyświetlania najnowszą DateApproved tak będzie wyglądać następująco:
id | SubjectCode | Grade | DateApproved | StudentId
2 SUB123 2.00 1/5/2012 2012-12345
3 SUB123 3.00 1/5/2012 2012-98765
Jestem trochę zagubiony, jak to zrobić?
EDIT:
Ok chłopaki teraz im o moim prawdziwym komputerze, przepraszam za źle skonstruowane pytanie.
Oto co ja rzeczywiście próbuje zrobić:
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
Zasadniczo, chcę tylko, aby wyświetlić najnowszą „DateApprove” o „SubjectCode”, więc nie dostać wiele wpisów .
rzeczywiście chcesz grupy przez StudentId. Aby to zrobić, należy wybrać opcję max (DateApproved). (Zakładając, że DateApproved jest polem daty) –
OK, DateApproved jest VARCHAR, czy to zadziała: MAX (STR_TO_DATE (DateApproved, '% d% m% y'))? –
Hmm. Warte strzału. Musisz spróbować i zobaczyć. Nie jestem zbyt obeznany ze składnią mysql. –