У меня есть таблица оценок работы курса с заголовками таблицы:
Код модуля, номера курсов, студент, дата подачи, отметка
Пример данных в порядке заголовков таблицы:
Математика, 1, Пэрри, 12 июня 92, 20
Математика, 2, Пэрри, 13 июня 92, 20
Математика, 2, Пэрри, 15 -JUN-92, 25
Ожидаемые данные после запроса
Математика, 1, Пэрри, 12-ИЮН-92, 20
Математика, 2, Пэрри, 15-ИЮН -92, 25
Иногда студент сдает экзамен, и у него есть дополнительный ряд для части курсовой работы. Мне нужно попытаться получить только последние курсовые работы в таблице. Следующее работает, когда я изолирую конкретного студента:
SELECT *
FROM TABLE
WHERE NAME = ‘NAME’
AND DATE IN (SELECT MAX(DATE)
FROM TABLE
WHERE NAME = ‘NAME’
GROUP BY MODULE_CODE, COURSEWORK_NUMBER, STUDENT)
Это дает правильное решение для этого человека, давая мне самые последние даты для каждой строки (каждой курсовой работы) в таблице. Тем не менее, это:
SELECT *
FROM TABLE
AND DATE IN (SELECT MAX(DATE)
FROM TABLE
GROUP BY MODULE_CODE, COURSEWORK_NUMBER, STUDENT)
Не дает мне тот же стол, но для каждого человека, который пытался курсовую работу. Куда я иду не так? Извините, если детали немного скудны, но я беспокоюсь о плагиате.
Работа с SQL плюс