Мой вопрос заключается в том, как определить повторяющиеся (повторяющиеся) группы данных в таблице SQL.В настоящее время я использую SQL Server 2005, поэтому я предпочитаю решения, основанные на этом или ansi-sql.
Вот пример таблицы и ожидаемый результат (ниже), на котором будет основываться этот вопрос:
declare @data table (id nvarchar(10), fund nvarchar(1), xtype nvarchar(1))
insert into @data select 'Switch_1', 'A', 'S'
insert into @data select 'Switch_1', 'X', 'B'
insert into @data select 'Switch_1', 'Y', 'B'
insert into @data select 'Switch_1', 'Z', 'B'
insert into @data select 'Switch_2', 'A', 'S'
insert into @data select 'Switch_2', 'X', 'B'
insert into @data select 'Switch_2', 'Y', 'B'
insert into @data select 'Switch_2', 'Z', 'B'
insert into @data select 'Switch_3', 'C', 'S'
insert into @data select 'Switch_3', 'D', 'B'
insert into @data select 'Switch_4', 'C', 'S'
insert into @data select 'Switch_4', 'F', 'B'
(новые данные)
insert into @data select 'Switch_5', 'A', 'S'
insert into @data select 'Switch_5', 'X', 'B'
insert into @data select 'Switch_5', 'Y', 'B'
insert into @data select 'Switch_5', 'Z', 'B'
-- id fund xtype match
-- ---------- ---- ----- ---------
-- Switch_1 A S Match_1
-- Switch_1 X B Match_1
-- Switch_1 Y B Match_1
-- Switch_1 Z B Match_1
-- Switch_2 A S Match_1
-- Switch_2 X B Match_1
-- Switch_2 Y B Match_1
-- Switch_2 Z B Match_1
-- Switch_3 C S
-- Switch_3 D B
-- Switch_4 C S
-- Switch_4 F B
(новые результаты)
-- Switch_5 A S Match_1
-- Switch_5 X B Match_1
-- Switch_5 Y B Match_1
-- Switch_5 Z B Match_1
Я хочу совпадения только на основе ALL или NOTHING (т. Е. Все записи всоответствие группы всем записям в другой группе - не совпадение по частям).Можно использовать любой идентификатор совпадения (я использовал Match_1 выше, но может быть числовым и т. Д.)
Спасибо за любую помощь здесь.
(РЕДАКТИРОВАТЬ: я думаю, я должен добавить, что может быть любое количество строк в группе, а не только 2 или 4, показанные в примере выше - и я также пытаюсь избегать курсоров)
(РЕДАКТИРОВАТЬ 2: Кажется, у меня проблема, если найдено более одного совпадения. Выходные данные из поставляемого SQL возвращают дубликаты записей для Switch_1, когда найдено более одного совпадения. Я соответственно обновил пример данныхНе уверен, что Ливен все еще следит за этим - я также смотрю на решение и опубликую здесь, если найдут.)