Oracle / SQL - удаление повторяющихся записей на основе заказа? - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть следующий набор результатов «Базовое имя», «Версия»

enter image description here

Каждая запись базовой линии имеет повторяющиеся строки из базовых линий под ней в набор результатов. Я хочу, чтобы только первый экземпляр «Версии» был виден (начиная с базового уровня 1 и повышаясь), чтобы результат выглядел следующим образом:

enter image description here

У кого-нибудь есть советы, как это сделать?

Спасибо, Мэтт

Ответы [ 2 ]

1 голос
/ 03 апреля 2020

Требуется минимальная базовая линия для версии:

select min(baseline), version
from mytable
group by version
order by baseline desc, version asc;

(Это работает, если можно заказать базовые линии и версии. Если у вас есть базовые строки, такие как «базовая линия 1», «базовая линия 2»,. .. «базовый уровень 10», то это, например, не работает, так как «базовый уровень 10» находится между «базовым уровнем 1» и «базовым уровнем 2» в алфавитном порядке.)

0 голосов
/ 03 апреля 2020

Предполагая, что у вас есть столбец заказа (скажем, id), вы можете использовать row_number():

select *
from (
    select t.*, row_number() over(partition by version order by id) rn
    from mytable t
) t
where rn = 1
...