mssql sqlserver 多行合并为一列的方法分享


摘要:
下文通过举例的方式分享将数据表中多行单列合并一列及单行多列合并为一列的方法分享,如下所示:
实验环境:sqlserver 2008 R2



多行合并为一列的方法语法如下所示:
declare @string varchar(max)
select @string=isnull(@string+’,’,”)+列名1 from 表名 [where] –多行单列合并为一列
select @string=isnull(@string+’,’,”)+列名1+列名2+列名…… from 表名 [where] –多行多列合并为一列

例:

   create table test(keyId int identity(1,1),
 info varchar(100),info2 varchar(10))
insert into test(info,info2)values
(N'猫猫小屋','a'),('maomao365.com','b'),
(N'sql教程','c')
go

 --单列字符串合并
 declare @tmp varchar(8000)
 select     @tmp=isnull(@tmp+',','')+info  from test  
 
  ---多列字符串合并
  declare @tmp2 varchar(8000)
  select    @tmp2=isnull(@tmp2+',','')+info+'|'+info2  from test  
 
  select  @tmp as [单列叠加],@tmp2 as [多列叠加]
  
  go
  truncate table test
  drop     table test