| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Sql запрос на удаление одинаковых звонков |
| Автор: addtanya 9.8.2008, 15:40 |
| Привет! Помогите пжл. доработать запрос! Сначала объясню суть проблемы: есть таблица звонков calls в ней поля id, duration_sec(продолжительность звонка), call_num (исх. звонок), call_num_in (вход. звонок), datetime. В этой таблице есть повторяющиеся звонки, т.е. все вышеперечисленные поля одинаковы.. Вот запрос: SELECT * FROM calls c1 WHERE phone_id = '00240' and datetime_call between '20080701' and '20080731' and ( SELECT COUNT(*) FROM calls c2 WHERE c1.datetime_call = c2.datetime_call and c1.duration_sec = c2.duration_sec and c1.call_num = c2.call_num and c1.call_num_in = c2.call_num_in) > 1 Этот запрос выбирает все дублирующиеся звонки Пример: id phone_id datetime_call duration_sec call_num call_num_in 1 00240 2008.07.10 50 4545 9999 2 00240 2008.07.10 50 4545 9999 ...... Необходимо оставить один из них (любой), а второй удалить! |
| Автор: Данкинг 9.8.2008, 16:49 |
| Т.е. звёздочку заменить на "distinct", что ли? |
| Автор: addtanya 9.8.2008, 17:16 |
| так не работает, я не знаю какой критерий ему задать, чтобы в результате запроса оставались только одинарные звонки, те которые повторяются вообще надо удалить... |
| Автор: Данкинг 9.8.2008, 18:01 | ||
|
| Автор: Magnifico 10.8.2008, 13:11 | ||
| distinct удаляет дублирующие строки ( в результате запроса нет дублирующих строк , тк id разное) надо взять агрегат от поля id , остальные поля сгруппировать.
|
| Автор: addtanya 11.8.2008, 09:15 |
| Спасибо за помощь, запрос работает! |