--1.创建一个合并的函数
create function fmerg(@id varchar(10))
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

解决方案 »

  1.   


    --创建处理函数
    create function f_str(@单位 varchar(10))
    returns varchar(8000)
    as
    begin
    declare @r varchar(8000)
    set @r=''
    select @r=@r+','+描述 from 表 where 单位=@单位
    return(stuff(@r,1,1,''))
    end
    go--调用实现查询
    select 单位,描述=dbo.f_str(单位) from 表 group by 单位
      

  2.   

    --测试--测试数据
    create table 表(单位 varchar(10),描述 varchar(10))
    insert 表 select '单位1','aaaa'
    union all select '单位1','bbbb'
    union all select '单位1','cccc'
    union all select '单位2','dddd'
    union all select '单位2','eeee'
    union all select '单位2','ffff'
    go--创建处理函数
    create function f_str(@单位 varchar(10))
    returns varchar(8000)
    as
    begin
    declare @r varchar(8000)
    set @r=''
    select @r=@r+','+描述 from 表 where 单位=@单位
    return(stuff(@r,1,1,''))
    end
    go--调用实现查询
    select 单位,描述=dbo.f_str(单位) from 表 group by 单位
    go--删除测试
    drop table 表
    drop function f_str/*--测试结果单位         描述                
    ---------- ---------------------
    单位1        aaaa,bbbb,cccc
    单位2        dddd,eeee,ffff(所影响的行数为 2 行)--*/
      

  3.   

    --作者:zjcxc(邹建)
    --创建合并函数
    --根据字段@a合并
    create function f_str(@a varchar(10))
    returns varchar(8000)
    as
    begin
    declare @ varchar(8000)
    set @=''
    select @=@+b from 表 where a=@a
    return(@)
    end
    go
      

  4.   

    谢谢各位txlicenhe(马可)如果遇上描述中有空值会出问题set @str=right(@str,len(@str)-1)前应判断@str长度大于0,zjcxc(邹建)的完全OK,outwindows(窗外) 的逗号没去掉故zjcxc(邹建)送30分其它两位各送10分