欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

利用FOR XML PATH行转列(根据某字段分组,多行数据转成一行,并用逗号隔开)

程序员文章站 2022-05-22 21:41:03
CREATE TABLE #TEST(A VARCHAR(10) NULL,B VARCHAR(MAX) NULL) INSERT INTO #TESTSELECT 'A','A001'UNION ALLSELECT 'A','A002'UNION ALLSELECT 'A','A003'UNION ......

create table #test
(a varchar(10) null,b varchar(max) null)

insert into #test
select 'a','a001'
union all
select 'a','a002'
union all
select 'a','a003'
union all
select 'b','b001'
union all
select 'b','b002'

 

select * from #test

 

--先来看一个简单的,效果如下图所示:

select stuff((select ','+b from #test for xml path('')),1,1,'')

利用FOR XML PATH行转列(根据某字段分组,多行数据转成一行,并用逗号隔开)

---------------------------------------------------------------

--再来个我们想要的,效果见下图:
select distinct t1.a,
replace((select b as [data()] from #test t2 where t1.a=t2.a for xml path('')),' ',',') as b
from #test t1

---------------------------------------------------------------

利用FOR XML PATH行转列(根据某字段分组,多行数据转成一行,并用逗号隔开)