表1,有字段A,B(字符型),记录如下
字段A 字段B
A 一
A 二
A 三
B 四
B 五
B 六
... ... 要得到的结果是这样的:
A 一,二,三
B 四,五,六
... ...........就是根据字段A来分组,然后把每组的B字段的内容放在一块 .不能使用变量
字段A 字段B
A 一
A 二
A 三
B 四
B 五
B 六
... ... 要得到的结果是这样的:
A 一,二,三
B 四,五,六
... ...........就是根据字段A来分组,然后把每组的B字段的内容放在一块 .不能使用变量
insert into tb
select 'A','一'
union all select 'A','二'
union all select 'A','三'
union all select 'B','四'
union all select 'B','五'
union all select 'B','六'
gocreate function dbo.fc_str(@A varchar(100))
returns varchar(100)
as
begin
declare @sql varchar(1000)
set @sql=''
select @sql=@sql+','+cast(字段B as varchar(100)) from tb where 字段A=@A
return stuff(@sql,1,1,'')
end
goselect 字段A,dbo.fc_str(字段A) as 字段B from tb group by 字段Adrop table tb
drop function dbo.fc_str
CREATE FUNCTION dbo.f_str(@id varchar(10))
RETURNS varchar(1000)
AS
BEGIN
DECLARE @re varchar(1000)
SET @re=''
SELECT @re=@re+','+CAST(字段B as varchar)
FROM 表1
WHERE 字段A=@id
RETURN(STUFF(@re,1,1,''))
END
GO--调用函数
SELECT 字段A,字段B=dbo.f_str(字段A) FROM 表1 GROUP BY 字段A