Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Объединение строк таблицы  [new]
SQLcoder
Member

Откуда:
Сообщений: 14
Доброго времени суток, уважаемые форумчане! Подскажите пожалуйста, как объединить дублирующие строки в таблице, например
Id | F | I | O | Phone
1 |Иванов |Иван | | 11111
2 |Иванов | | Иванович | 11111
3 |Петров |Пётр |Петрович | 22222

Результат:

Id | F | I | O | Phone
1 |Иванов |Иван | Иванович | 11111
3 |Петров |Пётр |Петрович | 22222
13 янв 17, 10:53    [20101659]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк таблицы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
А если так, что должно получиться?

Id | F | I | O | Phone
1 |Иванов |Иван | | 11111
2 |Сидоров| | Иванович | 11111
3 |Петров |Пётр |Петрович | 22222

Или если так?

Id | F | I | O | Phone
1 |Иванов |Иван | | 11111
2 |Иванов |Василий| Иванович | 11111
3 |Петров |Пётр |Петрович | 22222

Что вы "дублированием" считаете-то?

Сообщение было отредактировано: 13 янв 17, 10:56
13 янв 17, 10:55    [20101664]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
SQLcoder,

здесь нет дублирующих строк. Есть условия по которым вы отбрасываете те или иные результаты
13 янв 17, 10:55    [20101665]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк таблицы  [new]
SQLcoder
Member

Откуда:
Сообщений: 14
"Что вы "дублированием" считаете-то?" - согласен, пример не очень, имеется ещё одна колонка GUID, если есть одинаковые Guidы эти строки считаются дубликатами
13 янв 17, 11:35    [20101861]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк таблицы  [new]
SQLcoder
Member

Откуда:
Сообщений: 14
Id | GUID|F | I | O | Phone
1 |111-111|Иванов |Иван | | 11111
2 |111-111|Иванов | | Иванович | 11111
3 |121-121|Петров |Пётр |Петрович | 22222
13 янв 17, 11:38    [20101879]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
SQLcoder,
как то так
;WITH x AS (
SELECT *, Rn = ROW_NUMBER() OVER (PARTITION BY GUID ORDER BY F,I,O DESC)
)
SELECT * FROM x WHERE Rn = 1
13 янв 17, 11:40    [20101897]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк таблицы  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
SQLcoder
если есть одинаковые Guidы эти строки считаются дубликатами
А если в таких строках разные имена, фамилии и т.п.?
13 янв 17, 11:40    [20101899]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк таблицы  [new]
Sybex
Member

Откуда: Moscow
Сообщений: 119
Если я правильно понимаю, то при одинаковых GUID все поля имеют либо одинаковые значения, либо NULL. Если это так, то можно обойтись таким способом:
DECLARE @T TABLE(Id int, GUID varchar(10), F varchar(50), I varchar(50), O varchar(50), phone varchar(20))

INSERT @T
VALUES (1, '111-111', 'Иванов', 'Иван', NULL, '11111')
      ,(2, '111-111', 'Иванов', NULL, 'Иванович', '11111')
      ,(3, '121-121', 'Петров', 'Пётр', 'Петрович', '22222')

SELECT min(id) id
      ,guid
      ,min(f) f
      ,min(i) i
      ,min(o) o
      ,min(phone) phone
  FROM @T
 GROUP BY guid
13 янв 17, 12:09    [20102078]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить