Я пытаюсь найти все связанные записи.Проблема в том, что, кажется, я могу получить только третью связанную запись и ничего после нее.У нас есть записи, которые могут иметь 5+ иждивенцев.
Вот мой первоначальный запрос
CREATE TABLE #Data (
field1 varchar(25),
field2 varchar(50))
insert into #Data (field1, field2)
VALUES ('02968365','05431590'),
('02968365','05431590'),
('04355059','04460576'),
('04355059','05339398'),
('04460576','04776412'),
('04512483','04983582'),
('04512483','05434032'),
('04561297','05482964'),
('04561297','04801903'),
('04776412','05339398'),
('04801903','05482964'),
('04844609','05431253'),
('04844609','05431253'),
('04983582','05434032')
select distinct
rtrim(d1.field1) field1,
STUFF((SELECT DISTINCT '/' + rtrim(d2.field2)
from #Data d2
where d1.field1 = d2.field1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,0,'') field2
FROM #Data d1
И вот что производит запрос:
field1 field2
______________________________
1 | 02968365 | /05431590
2 | 04355059 | /04460576/05339398
3 | 04460576 | /04776412
4 | 04512483 | /04983582/05434032
5 | 04561297 | /04801903/05482964
6 | 04776412 | /05339398
7 | 04801903 | /05482964
8 | 04844609 | /05431253
9 | 04983582 | /05434032
Этосвязанные строки
2, 3, 6 - 04460576 в строке 2 field2 подключается к 04460576 в строке 3 field1, 04776412 строка 3 field2 подключается к 04776412 field1 в строке 6
4, 9 - 04983582 в строке 4 поле 2 соединяется с 04983582 в строке 9 поля 1
5, 7 - 04801903 в строке 5 поле 2 соединяется с 04801903 встрока 7 field1
Для этого мне нужно подключить те записи, которые все еще связаны или , удалить их из списка, если они связаны в столбце field2.
Это то, что я ищу.Я надеюсь отсортировать их, как показано:
field1 field2
______________________________
1 | 02968365 | /05431590
2 | 04355059 | /04460576/04776412/05339398
3 | 04512483 | /04983582/05434032
4 | 04561297 | /04801903/05482964
5 | 04844609 | /05431253
Как мне это сделать?