当前位置: 代码迷 >> Sql Server >> 怎么把多列多行合并成一行
  详细解决方案

怎么把多列多行合并成一行

热度:14   发布时间:2016-04-27 12:49:14.0
如何把多列多行合并成一行
例:
表结构如下:
user phone
a 123456a
b 123456b
c 123456c

希望变成一行结果如下:
a:123456a;b:123456b,c:123456c

如果方法能高效一点那就更好了,因为数据量不小,谢谢

------解决方案--------------------
SQL code
问题描述:无论是在sql 2000,还是在 sql 2005 中,都没有提供字符串的聚合函数,  所以,当我们在处理下列要求时,会比较麻烦:有表tb, 如下:id    value----- ------1     aa1     bbe
------解决方案--------------------
或用

declare @s nvarchar(max)
select @s=isnull(@s+';','')+user+':'+phone from table
print @s
------解决方案--------------------
SQL code
DECLARE @TB TABLE([user] VARCHAR(2),    phone VARCHAR(15))INSERT @TBSELECT 'a',  '123456a' UNION ALL SELECT 'b',  '123456b' UNION ALL SELECT 'c',  '123456c'DECLARE @SQL VARCHAR(100)SET @SQL=''SELECT @[email protected]+[user]+':'+phone FROM @TBSELECT @SQL/*a:123456ab:123456bc:123456c(1 row(s) affected)*/
------解决方案--------------------
把所有的行,循环一下。

这样写
SQL code
declare @sql varchar(8000)set @sql=''declare @id varchar(50)set @id=''declare @name varchar(50)set @name=''while @a>0  ---或用游标,自己看着办begin  [email protected]  @name  @[email protected]+','+cast(@id as varchar(50))+',[email protected]  [email protected]endif len(@sql)>0begin  set @sql=right(1,len(@sql)-1)  exec('select [email protected])end
  相关解决方案