--try
Create function GetStr(@no varchar(10))
returns varchar(200)
as
begin
    declare @s varchar(200)
    set @s=''
    select @s=@s+','+[year]+'' from B where no=@no
    return stuff(@s,1,1,'') 
endselect 
   no=a.no,
   name=a.name
   合并=dbo.GetStr(a.no)
from A
group by a.no,a.name

解决方案 »

  1.   

    --创建测试环境
    create table a
    (
     no int primary key,
     name varchar(30)
    )create table b
    (
     no int references a(no),
     year varchar(30)
    )
    go
    --追加测试数据
    insert a( no, name) values ( 1,'单位1' )
    insert a( no, name) values ( 2,'单位2' )
    insert a( no, name) values ( 3,'单位3' )insert b( no, year) values (1,  '2001')
    insert b( no, year) values (1,  '2003')
    insert b( no, year) values (1,  '2004')
    go--创建自定义函数
    create function dbo.CX(@no varchar(20)) 
    returns varchar(8000) 
    as
    begin
    declare @s varchar(8000)
    set @s = ''
    select @s = @s + ',' + [year] from b where no=@no
    set @s = stuff(@s,1,1,'')
    return @s
    end
    goselect * from a--调用
    select no,name,dbo.cx(no) as Title
    from a
    --删除临时表和自定义函数
    drop table b,a
    drop function CX--测试结果
    a name  Title
    -------------------------
    1 单位1 2001,2003,2004
    2 单位2 
    3 单位3