Составить запрос выборки без повторов по одному полю
есть таблица (oracle) где колонка Param имеет дублирующие значения - 111
Name Param
АА 111
BB 222
CC 111
DD 333
пробую составить запрос что-то типа
select Name, Param, row_number() over (partition by Name order by Param) from name_param;
и получить
Name Param
АА 111
BB 222
DD 333
без дубликата по полю Param
но не совсем получается(
подскажите, пожалуйста, как правильно сделать?
Ответы (1 шт):
Автор решения: Alex R.
→ Ссылка
Необходимо решить, что делать с полем name. Взять минимальное, максимальное?
Перечисление всех значений в строчку и минимальное значение
select
Param, listagg (name, ';') WITHIN GROUP (name) Names, min(name) MName
from name_param
group by Param
Результат
Param Names MName
111 АА;CC AA
222 BB BB
333 DD DD
На основе вашего запроса, первый в списке (что идентично использованию min)
select
Param, name
from
(select
param, name, row_number() over (partition by param order by name) num
from name_param)
where num = 1