Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Удаление дублирующихся записей


Автор: CyberDemon 14.3.2008, 13:46
Возникла проблема. Есть таблица с несколькими полями. Для примера возьмем два. Назавем их gest_ID и ordr_ID. Остальные поля нам не важны, просто скажем, что в них какие-то разные значения. Получается таблица:

Код

gets_ID    ordr_ID
-----------------------
111            1
111            2
111            3
222            1
222            2
333            1
333            2
333            3
333            4


Нам надо выбрать из таблицы (или перекинуть во временную) только одну строку, для каждого оригинального gest_ID. Тоесть во временной таблице все значения gest_ID должны быть оригинальны. Желательно, чтоб из строк с одинаковым gest_ID выбиралась последняя по списку строка (тоесть с максимальны ordr_ID), но если это не возможно, то фиг с ним. Я тут думал, что может можно это как-то удалением или перебросом во временные таблицы сделать, но пока ничего не вышло. Help!

Автор: ТоляМБА 14.3.2008, 14:28
Цитата(CyberDemon @  14.3.2008,  15:46 Найти цитируемый пост)
Нам надо выбрать из таблицы (или перекинуть во временную) только одну строку
О, майн Гот! Эта тема тут обсуждалась ... раз, ну ладно, ты ведь сам уже написал решение:
Цитата(CyberDemon @  14.3.2008,  15:46 Найти цитируемый пост)
Желательно, чтоб из строк с одинаковым gest_ID выбиралась последняя по списку строка (тоесть с максимальны ordr_ID), 


Код
Select gets_ID, Max(ordr_ID)
from Table1
Group By gets_ID

Автор: CyberDemon 14.3.2008, 15:32
Цитата

О, майн Гот! Эта тема тут обсуждалась ... раз, ну ладно, ты ведь сам уже написал решение:


Сортировка, это конечно хорошо и главное работает! В таком виде:
Код

select o_gestID, max(o_stoi) 
from #Table
group by o_gestID


А где тогда ошибка, чтоб было тоже самое но в таком виде:

Код

select o_gestID, o_Discount, o_PriceMenu, o_Price, o_CheckGroup,
o_NumberFiscal, max(o_stoi)
from #Table
group by o_gestID


Как заставить это работать? больше никаких сортировок не требуется. Только то, что описали.

Автор: CyberDemon 14.3.2008, 17:24
Сам разобрался. Спасибо!  smile 

Автор: nz1 17.3.2008, 17:25
Цитата(ТоляМБА @ 14.3.2008,  14:28)
Код
Select gets_ID, Max(ordr_ID)
from Table1
Group By gets_ID

жалко недастаточно постов, так бы поставил плюсик smile 

так как это как раз, что мне нужно было, спасибо!

но вот интересно, как подсчитать кол-во этой самой gets_ID, тоисть поля повторятся не будут, но будет выводится число повторений с этим ID

как такое сделать?

Автор: Itsys 17.3.2008, 17:31
Код

Select gets_ID, Max(ordr_ID), COUNT(*)
from Table1
Group By gets_ID

Автор: nz1 18.3.2008, 11:09
Цитата(Itsys @ 17.3.2008,  17:31)
Код

Select gets_ID, Max(ordr_ID), COUNT(*)
from Table1
Group By gets_ID

спасибоsmile)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)