create function get_n (@i varchar(10))
returns varchar(8000)
as
begin
  declare @str varchar(8000)
  select  @str =''
  select  @str =@str+部门 from 有一个表 where 代号=@i
  return @str
end--调用:
select *,dbo.get_n(代号) 备注 from 有一个表

解决方案 »

  1.   

    你给出的数据中,代码为001时,不是326部啊,是否数据没有给全?如果是的话,用下面的方法:
    --创建一个合并的函数
    create function f_merg(@代号 varchar(20))
    returns varchar(8000)
    as
    begin
    declare @re varchar(8000)
    set @re=''
    select @re=@re+部门 from 表 where 代号=@代号 order by 数量 desc
    return(@re)
    end
    go--添加备注列,调用此函数进行更新
    alter table 表 add 备注 varchar(8000)
    update 表 set 备注=dbo.f_merg(代号)
      

  2.   

    --用函数
    create function test(@id varchar(20))
    returns varchar(8000)
    as
    begin
    declare @sql varchar(8000)
    set @sql=''
    select @sql=@sql+部门 from 表 where 代号=@id
    return(@sql)
    end--执行
    --
    update 表 set 备注=dbo.test(代号)
      

  3.   

    --创建一个合并的函数
    create function f_merg(@代号 varchar(20))
    returns varchar(8000)
    as
    begin
    declare @re varchar(8000)
    set @re=''
    select @re=@re+部门 from 表 where 代号=@代号 order by 数量 desc
    return(@re)
    end
    go--添加备注列,调用此函数进行更新
    alter table 表 add 备注 varchar(8000)
    go
    update 表 set 备注=dbo.f_merg(代号)
      

  4.   

    下面是数据测试--创建数据测试环境
    create table tb(代号 varchar(10),数量 int,部门 varchar(20))
    insert into tb
    select '0001',20,'1部'
    union all select '0001',25,'2部'
    union all select '0001',30,'6部'
    union all select '0002',2,'1部'
    union all select '0003',2,'1部'
    union all select '0003',12,'2部'
    go--创建一个合并的函数
    create function f_merg(@代号 varchar(20))
    returns varchar(8000)
    as
    begin
    declare @re varchar(8000)
    set @re=''
    select @re=@re+部门 from tb where 代号=@代号 order by 数量 desc
    return(@re)
    end
    go--添加备注列,调用此函数进行更新
    alter table tb add 备注 varchar(8000)
    go
    update tb set 备注=dbo.f_merg(代号)--显示更新结果
    select *,dbo.f_merg(代号) from tb--删除测试环境
    drop table tb
    drop function f_merg