首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-05-20 
如何把多列多行合并成一行例:表结构如下:userphonea123456ab123456bc123456c希望变成一行结果如下:a:12345

如何把多列多行合并成一行
例:
表结构如下:
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 @SQL=@SQL+[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  --得到@id  @name  @sql=@sql+','+cast(@id as varchar(50))+','+@name  --设置@a的值endif len(@sql)>0begin  set @sql=right(1,len(@sql)-1)  exec('select '+@sql)end 

热点排行