Ваш вопрос немного расплывчато , но я считаю, это более или менее то, что вы хотите:
select * from (
select
<table>.*,
row_number() over (partition by article_id order by version desc) r
from
<table>
)
where r = 1
Запрос возвращает одну запись для каждого (отдельного) article_id.Это запись с наивысшей версией возвращенного article_id.
Итак, вместе с «тестовым примером» это можно увидеть в действии:
create table tq84_resorces (
id number primary key,
article_id number not null,
version number not null
);
insert into tq84_resorces values (50, 5, 1);
insert into tq84_resorces values (60, 5, 2);
insert into tq84_resorces values (70, 6, 1);
select * from (
select
tq84_resorces.*,
row_number() over (partition by article_id order by version desc) r
from
tq84_resorces
)
where r = 1
, которое возвращает:
ID ARTICLE_ID VERSION R
---------- ---------- ---------- ----------
60 5 2 1
70 6 1 1