建函数
create function  f_calc(@id  int)
returns varchar(8000)
begin 
  declare @aaa varchar(8000)
  select   @aaa=isNull(@aaa,'')+name1+','
  from  aaa   
  where linkid=@id
  set  @aaa=substring(@aaa,1,len(@aaa)-1)
  return  @aaa
end 
select  c.name1,dbo.f_calc(c.id)
from (
select a.name1,b.linkid   
from  table1 a,(
select *,substring(name2,2,len(name2)-1) as myid from  table2 ) b 
where a.id1=b.myid
) c  
经测试成功

解决方案 »

  1.   

    有对应要用对应,没有对应要想办法制造对应。
    错了,
    应该是
    select  c.linkid as  id2,dbo.f_calc(c.linkid) as  name3
    from (
    select a.name1,b.linkid   
    from  table1 a,(
    select *,substring(name2,2,len(name2)-1) as myid from  table2 ) b 
    where a.id1=b.myid
    ) c 
    group by c.linkid
      

  2.   

    To sankis() 服了吧,哈~~~
      

  3.   

    列名可能是不对应,但是楼上的程序肯定对我这样子理解:id1作为linkid的foreign Key选出与1 2 3对应的值
           
                  这时候仅作为外键存在的table1,没什么关系,真正的结果是拼接              而成的……
     想法不太成熟,如有不对,还望指正。
      

  4.   

    hmily1688(刘胜涛--进军WAP) 
    我晕。你可能理解错了哟。
    楼主那两个表的关系与果结似忽?
      

  5.   

    我想楼主要的结果是这个- id2 name3
    ------------------------------
    - 1 b1,b2,b3
    - 2 b4
    - 3 b5,b6
      

  6.   

    不好意思写错了
    sankis()是对的
    结果应该是
    - id2 name3
    ------------------------------
    - 1 b1,b2,b3
    - 2 b4
    - 3 b5,b6