参考这个例子: create table csdn(id char(10),txt varchar(10)) insert csdn select 'A','AA1' union all select 'A','AA2' union all select 'B','BB1' union all select 'B','BB2' go
create function Gettxt(@id char) returns varchar(8000) as begin declare @s varchar(8000) set @s='' select @s=@s +',' +txt from csdn where id=@id --return @s return stuff(@s,1,1,'') end go
select id,dbo.Gettxt(id) txt from csdn group by id go
有表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