Используя Oracle SQL, я хочу выбрать группу идентификаторов людей, дату и результаты теста в зависимости от того, когда тест был пройден.Моя проблема в том, что порядок приоритетов не в хронологическом порядке.Я хочу выбрать дату в 1-м году. Если у них ее нет в 1-м году, я хочу указать дату в 3-м году. Если у них нет 1 или 3, я хочу указать дату в 2-м году.
Я использовал case-функцию для создания переменной (check1), чтобы присвоить значение каждой строке на основе приоритета года, в котором был взят тест.Таким образом, все строки имеют 1, 2 или 3 в столбце check1.(1 является наивысшим приоритетом, 3 - наименьшим.)
Я знаю, сколько людей попадает в каждую группу, используя:
SELECT ID, MIN(check1)
FROM datatable
GROUP BY ID;
Вот моя проблема: мне также нужна дата, когда они взялитест, чтобы я мог присоединиться к правильным результатам теста обратно к желаемой дате.Когда я пытаюсь добавить дату к предыдущей функции:
SELECT ID, MIN(check1), date
FROM datatable
GROUP BY ID;
Ошибки Oracle, потому что переменная даты отсутствует в функции GROUP BY.Однако, когда я помещаю дату в группу по функции, она выбирает все записи, а не только min (check1).
Как мне выбрать одну строку на человека с желаемой датой?
Заранее спасибо !!