字符串连接问题
tab1c1 c2
--- ---
001 a
001 b
001 c
002 a
002 b
003 b
...
现在想实现如下的格式
c1 c2
--- ---
001 a,b,c
002 a,b
003 b
不能用循环和函数
不用函数肯定不行.
SQL语句之合并行列转换
有表rowtocol,其数据如下:
a b
1 1
1 2
1 3
2 1
2 2
3 1
如何转换成如下结果:
a b
1 1,2,3
2 1,2
3 1
创建一个合并的函数
create function f_rowtocol(@a int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str = ''
select @str = @str + ',' + cast(b as varchar) from rowtocol where a = @a
set @str = right(@str , len(@str) - 1)
return(@str)
End
go
调用自定义函数得到结果:
select distinct a ,dbo.f_rowtocol(a) from rowtocol