Пожалуйста, смотрите DDL ниже:Почему STUFF удаляет XML?
create table #Test (id int,Name varchar(30))
insert into #Test values (1,'Ian')
insert into #Test values(1,'Mark')
insert into #Test values(2,'James')
insert into #Test values(3,'Karen')
insert into #Test values(3,'Suzie')
и SQL ниже:
select * from #Test for xml path('')
, которая возвращает:
<id>1</id>
<Name>Ian</Name>
<id>1</id>
<Name>Mark</Name>
<id>2</id>
<Name>James</Name>
<id>3</id>
<Name>Karen</Name>
<id>3</id>
<Name>Suzie</Name>
Это то, что я хотел бы ожидать. Теперь посмотрим ниже SQL:
SELECT distinct ID,
STUFF((select ','+ NAME from #Test as #Test1 where #Test1.id=#Test2.id FOR XML PATH('')),1,1,'') FROM #Test as #Test2
, который возвращает:
1 Ian,Mark
2 James
3 Karen,Suzie
Это то, что я хочу вернулся. Однако, где остались элементы XML?
Это одна из самых важных вещей, которые я прочитал об этом. Это доказывает, что код на самом деле является взломом и, вероятно, в будущих выпусках его нельзя использовать. Это правильный ответ. – Paul