下面是我现在使用的代码。在现实生活中,@stab 表很大(它是普通表而不是变量),并且有很多串联列,而不仅仅是 2 个。我想知道是否有比我在这个示例中使用的更好的解决方案。我使用旧的 MSSQL,因此 STRING_AGG() 不可用。我的结果是正确的,但我想知道是否有更好的方法,例如选择一个 XML,然后从该 XML 中选择列。
declare @stab table (id int , v1 varchar(10),v2 varchar(10))
declare @xmlstring xml
insert into @stab values (1,'aaa','1111'),(1,'bbbb','2222'),(2,'cccc','3333'),(2,'dddd','4444')
--select * from @stab t1
select
id,
stuff((select ','+v1 from @stab t2 where t1.id=t2.id for xml path('')) ,1,1,'')
,stuff((select ','+v2 from @stab t2 where t1.id=t2.id for xml path('')) ,1,1,'')
from @stab t1 group by id