如何把多列多行合并成一行
例:
表结构如下:
user phone
a 123456a
b 123456b
c 123456c
希望变成一行结果如下:
a:123456a;b:123456b,c:123456c
如果方法能高效一点那就更好了,因为数据量不小,谢谢
[解决办法]
问题描述:无论是在sql 2000,还是在 sql 2005 中,都没有提供字符串的聚合函数, 所以,当我们在处理下列要求时,会比较麻烦:有表tb, 如下:id value----- ------1 aa1 bbe
[解决办法]
或用
declare @s nvarchar(max)
select @s=isnull(@s+';','')+user+':'+phone from table
print @s
[解决办法]
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)*/
[解决办法]
把所有的行,循环一下。
这样写
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