получить только одну строку с тем же именем, индексом, количеством, но другим кодом - PullRequest
0 голосов
/ 09 января 2012

У меня есть запрос:

select distinct index, name, code, amount as amount_min 
from sales s 
where (amount = 
(
    select mindex(s1.amount) 
    from sales s1 
    where  s1.name = s.name
)) 
order by s.name

Запрос работает очень хорошо, но я хотел бы изменить их так, чтобы, когда индекс столбца, код, сумма в нескольких строках были идентичными, показывалось только одно, первый ряд.Остальное (хотя разные кодовые столбцы) следует игнорировать.Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 09 января 2012

Поскольку я не знаю, является ли это Oracle, SQL Server, Sybase ASE и т. Д., Вы можете сделать это следующим образом:

Шаг 1: вставить данные во временную таблицу со столбцом идентификаторов

select distinct counter = identity(10), index, name, code, amount as amount_min
into #t1
from sales s 
where (amount = 
(
    select mindex(s1.amount) 
    from sales s1 
    where  s1.name = s.name
)) 
order by s.name

Шаг 2: сделать необходимый выбор

select index, name, code, amount_min from #t1
where counter in (select min(counter) from #t1 group by index, name, amount_min)

Шаг 3: удалить временную таблицу

drop table #t1
...