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

Откуда:
Сообщений: 1
Доброго дня.
Есть запрос.

create table #Test (t1 nvarchar(50), t2nvarchar(50))
insert into #Test
SELECT t1,t2
FROM DB
group by t1,t2
HAVING (COUNT(*) > 1)

Создается временная таблица для выборки повторяющихся значений по 2м полям (t1,t2).

Далее из основной таблицы Table делается выборка с присоединением #Test

select t0,t1,t2,t3,t4,t5

FROM Table
inner join
#Test on
Table.t1= #Test.t1
and Table.t2=#Test.t2

group by
t0,t1,t2,t3,t4,t5


order by Table.t1

В итоге получаю выборку по 2м повторяющимся полям с выводом из основной остальных полей.

Вопрос следующий: Как в получившейся выборке или таблице #Test убрать строки, повторяющиеся по полям t3,t4?

Спасибо.
21 сен 16, 11:23    [19690821]     Ответить | Цитировать Сообщить модератору
 Re: MS sql Удаление повторяющихся строк  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Roman Huskar,

пипец, а еще более запутанно вы не могли все это описать? вам бы детективы рисовать.
приведите пример входных данных и желаемый результат, а то на середине повествования у меня уже пропал весь интузазизм.
21 сен 16, 15:20    [19692691]     Ответить | Цитировать Сообщить модератору
 Re: MS sql Удаление повторяющихся строк  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4997
WarAnt
Roman Huskar,

пипец, а еще более запутанно вы не могли все это описать? вам бы детективы рисовать.
приведите пример входных данных и желаемый результат, а то на середине повествования у меня уже пропал весь интузазизм.

аналогично)
21 сен 16, 16:14    [19692985]     Ответить | Цитировать Сообщить модератору
 Re: MS sql Удаление повторяющихся строк  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4901
Roman Huskar,

В топку временный таблицы и прочую хрень. На дворе 2016 год

DECLARE @T TABLE (X INT NOT NULL) 

INSERT INTO @T VALUES (1)
INSERT INTO @T VALUES (1)
INSERT INTO @T VALUES (2)
INSERT INTO @T VALUES (2)
INSERT INTO @T VALUES (3)
INSERT INTO @T VALUES (4)
INSERT INTO @T VALUES (4)
INSERT INTO @T VALUES (4)

DELETE FROM A
FROM 
(
	SELECT X FROM 
	(
		SELECT X, ROW_NUMBER() OVER (PARTITION BY X ORDER BY (SELECT NULL)) AS RN FROM @T
	) B 
	WHERE RN > 1
) A


SELECT * FROM @T
21 сен 16, 18:20    [19693585]     Ответить | Цитировать Сообщить модератору
 Re: MS sql Удаление повторяющихся строк  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
a_voronin
Roman Huskar,

В топку временный таблицы и прочую хрень. На дворе 2016 год

DECLARE @T TABLE (X INT NOT NULL) 

INSERT INTO @T VALUES (1)
INSERT INTO @T VALUES (1)
INSERT INTO @T VALUES (2)
INSERT INTO @T VALUES (2)
INSERT INTO @T VALUES (3)
INSERT INTO @T VALUES (4)
INSERT INTO @T VALUES (4)
INSERT INTO @T VALUES (4)

DELETE FROM A
FROM 
(
	SELECT X FROM 
	(
		SELECT X, ROW_NUMBER() OVER (PARTITION BY X ORDER BY (SELECT NULL)) AS RN FROM @T
	) B 
	WHERE RN > 1
) A


SELECT * FROM @T
Чо-то накручено...
Для этого примера так не проще будет:
DECLARE @T TABLE (X INT NOT NULL) 

INSERT @T(X) VALUES (1),(1),(2),(2),(3),(4),(4),(4);

WITH CTE(N) AS (SELECT ROW_NUMBER() OVER (PARTITION BY X ORDER BY 1/0) FROM @T)
DELETE CTE WHERE N>1;

SELECT * FROM @T;
22 сен 16, 10:35    [19695197]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить