create function getstr(@单位名称 int)
returns varchar(2000)
as 
begin
declare @str varchar(2000)
set @str=''
select @str=@str+','+rtrim(收费类别) from 表 where 单位名称=@单位名称
select @str=right(@str,len(@str)-1) where @str<>''
return @str
end
go--调用:
select 单位名称,dbo.getstr(单位名称) 收费类别  from 表 group by 单位名称

解决方案 »

  1.   

    1,建自定义函数
    create function getstr(@id int)
    returns Nvarchar(4000)
    as 
    begin
    declare @str Nvarchar(2000)
    set @str=N''
    select @str=@str+rtrim(收费类别)+N',' from table
    where 单位名称=@id
    if @str<>N'' 
        set @str=left(@str,len(@str)-1)
    return @str
    endGO2,
    select 单位名称,dbo.getstr(单位名称) as 收费类别 from table group by 单位名称
      

  2.   


    --1.创建一个合并的函数
    create function fmerg(@id int)
    returns varchar(8000)
    as
    begin
    declare @str varchar(8000)
    set @str=''
    select @str=@str+','+收费类别 from 表A where 单位名称=@id
    set @str=right(@str,len(@str)-1)
    return(@str)
    End
    go--调用自定义函数得到结果
    select distinct 单位名称,dbo.fmerg(单位名称) from 表A