Например, в таблице ниже есть данные, у которых совпадают столбцы ACC_ID и NAME. Мне нужно все такие записи слить в одну. В БД в моём случае их всегда 2, то есть по определённому ключу всегда выводятся не более 2 дубликатов, у которых отличается только IDENTITY столбец. Есть ещё другие записи, которые не имеют дубликатов. В моём примере примерно тоже самое. Ещё хотелось бы всё-аки не просто удалять дубликаты, а лучше именно сливать с них данные. Как это можно сделать?
IF OBJECT_ID('dbo.People') IS NULL
CREATE TABLE dbo.People (
USER_ID INT NOT NULL
,ACC_ID INT NOT NULL
,NAME NVARCHAR(30) NOT NULL
,DEPARTMENT_ID INT NULL
,CONSTRAINT PK_People_USER_ID PRIMARY KEY CLUSTERED (USER_ID)
) ON [PRIMARY]
GO
INSERT INTO dbo.People(USER_ID, ACC_ID, NAME, DEPARTMENT_ID)
VALUES
(1, 10, N'Владимир', 1),
(2, 10, N'Владимир', 1),
(3, 30, N'Александр', 2),
(4, 30, N'Александр', 2),
(5, 50, N'Юрий', 25),
(6, 50, N'Юрий', NULL),
(7, 60, N'Андрей', NULL),
(8, 60, N'Андрей', NULL);
GO
В итоге я хочу получить это:
(2, 10, N'Владимир', 1),
(4, 30, N'Александр', 2),
(6, 50, N'Юрий', 25),
(8, 60, N'Андрей', NULL);
UPDATE:
В таблице ещё есть строки не дубликаты. То есть, не каждая запись имеет пару, которую нужно или просто удалить или слить в одну.
Дубликаты я получаю так:
SELECT COUNT(*) AS [Count], ACC_ID, NAME
FROM People
GROUP BY ACC_ID, NAME
HAVING COUNT(*) > 1