Получить строку, которая имеет максимальное значение версии, но не активна - PullRequest
0 голосов
/ 04 января 2019

У меня есть таблица, в которую всегда вставляются изменения. Для этой цели номер версии увеличивается при каждой вставке, но одна версия всегда устанавливается активной как активная. Теперь я хотел бы получить все строки, в которых строка с самой высокой версией не имеет 'active' = true.

| UID | Version | Active | Name  |
----------------------------------
| 001 |       1 | _      | Peter |
| 001 |       2 | X      | Paul  |
| 001 |       3 | _      | Petra |
| 002 |       1 | _      | Walt  |
| 002 |       2 | X      | Jan   |
| 003 |       1 | X      | Brad  |

Результат запроса должен возвращать только uid 001, поскольку существует максимальная версия 3, которая не активна.

Я предполагаю, что мне нужно какое-то самостоятельное соединение?

Спасибо за любую помощь в этом!

1 Ответ

0 голосов
/ 04 января 2019

Вы можете использовать подзапрос и внутреннее объединение

select uid, version
from my_table m
inner join  (
  select  uid, max(version) max_version
  from my_table 
  group by uid
) t ON t.uid = m.uid and t.max_version = m.version 
where active ='-'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...