У меня есть следующая таблица A и таблица B, где A один ко многим с B; для каждой записи A мне нужно выбрать соответствующую максимальную запись в B для каждой группы для A. т.е. группировка выполняется на основе last_updated_time.
SELECT taba.ws_name, tabb.b2a, max(tabb.last_update_time)
FROM TabA taba, TabB tabb
where taba.name = 'xyz'
and taba.id = tabb.b2a
group by taba.ws_name, tabb.b2a
Это работает хорошо и хорошо.
Проблема возникает, когда мне нужно выбрать «статус» последней транзакции, это приводит к выбору дубликатов, потому что статус может быть либо неудачным, либо успешным.
Мое требование — выбрать только максимальную запись независимо от ее статуса (хотя мне также нужно отобразить статус)
Поэтому, когда какое-либо «ws_name» имеет несколько записей об ошибках, а также об успехах, поэтому MAX updated_time выбирается для обеих групп («Неудача» и «Успех»).
Ниже приведен запрос, который я пробовал и не понял, как удалить дубликаты, выбранные из-за статуса.
SELECT taba.ws_name, tabb.b2a, **tabb.status**, max(tabb.last_update_time)
FROM TabA taba, TabB tabb
where taba.name = 'xyz'
and taba.id = tabb.b2a
group by taba.ws_name, tabb.b2a, **tabb.status**