Я использую Oracle SQL и пытаюсь выполнить исторический анализ результатов тестирования (чтобы визуализировать улучшения результатов тестирования за месяц для отдельных лиц).Во-первых, у меня есть таблица, которая представляет собой список пользователей и соответствующие месяцы, когда они активны;это выглядит примерно так:
TABLE1
________________________
UserName | ActiveDate
________________________
John Doe, 01-MAY-18
John Doe, 01-APR-18
John Doe, 01-MAR-18
Jane Doe, 01-APR-18
Jane Doe, 01-MAR-18
Jim Doe, 01-MAY-18
Кроме того, у меня есть еще одна таблица, в которой перечислены результаты тестов с временными метками (вы можете повторить тест столько раз, сколько захотите).Это выглядит примерно так:
TABLE2
________________________________________
UserName | TestScore | EffectiveDate
________________________________________
John Doe, 87, 07-FEB-18
John Doe, 85, 14-FEB-18
John Doe, 90, 18-FEB-18
John Doe, 92, 02-MAR-18
John Doe, 91, 12-MAR-18
Jane Doe, 70, 01-FEB-18
Jane Doe, 72, 02-FEB-18
Jane Doe, 78, 18-FEB-18
Jane Doe, 77, 06-MAR-18
Jane Doe, 81, 18-MAR-18
Jim Doe, 50, 03-MAR-18
Jim Doe, 48, 23-MAR-18
Jim Doe, 58, 08-APR-18
Для каждой строки в первой таблице (все пары UserName | ActiveDate различны), я хотел бы выбрать самую последнюю TestScore из таблицы 2, где EffectiveDateдо ActiveDate
Так что я надеюсь получить что-то вроде этого
UserName | ActiveDate | Most recent TestScore prior to ActiveDate
______________________________________
John Doe, 01-MAY-18, 91
John Doe, 01-APR-18, 91
John Doe, 01-MAR-18, 90
Jane Doe, 01-APR-18, 81
Jane Doe, 01-MAR-18, 78
Jim Doe, 01-MAY-18, 58
Я пытался сделать эту работу с помощью JOINING Table1в Table2 для UserName, где EffectiveDate
Спасибо за любые советы заранее.Это моя первая публикация в StackOverflow, поэтому я надеюсь, что я правильно задал этот вопрос!
Редактировать: Спасибо всем за помощь, я думаю, что у меня есть все, что нужно для продолжения моего проекта.Я обязательно внесу некоторые улучшения в мою публикацию в следующий раз, когда я задам вопрос здесь на SO.