有以下两个表
Table1:
  PrimaryCode     FCode   KeyArea
   20060001        001     china
   20060001        002     china
   20060001        003     china
   20060002        001     china
   20060002        003     china
   20060003        005     china
Table2:
   FCode   KeyArea    CName
    001     china     上海
    002     china     北京
    003     china     广州
    004     china     武汉
    005     china     大连
------------------------
想要结果
  PrimaryCode         UionName        KeyArea
   20060001        上海;北京;广州      china
   20060002        上海;广州           china
   20060003        大连                china
----------------------
请问如何实现呀?  谢谢!

解决方案 »

  1.   


    create table tb (PrimaryCode varchar(10),FCode varchar(10),KeyArea varchar(10)) insert into tb select  '20060001', '001','china'
    union all select '20060001','002','china'
    union all select '20060001','003','china'
    union all select '20060002','001','china'
    union all select '20060002', '003','china'
    union all select '20060003','005','china'
    gocreate table tt(FCode varchar(10),KeyArea varchar(10),CName varchar(10))
    insert into tt select  '001','china','上海'
    union all select '002','china','北京'
    union all select '003','china','广州'
    union all select '004','china','武汉'
    union all select '005','china','大连'
    gocreate view fcstr
    as
    select a.PrimaryCode,b.CName,a.KeyArea from tb a,tt b where a.FCode=b.FCode
    gocreate function dbo.fc_str(@PrimaryCode varchar(10))
    returns varchar(100)
    as
    begin
     declare @sql varchar(1000)
     set @sql=''
     select @sql=@sql+';'+cast(CName as varchar) from fcstr where PrimaryCode=@PrimaryCode
     return stuff(@sql,1,1,'')
    end
    goselect PrimaryCode,dbo.fc_str(PrimaryCode) as UnionName,KeyArea from fcstr group by PrimaryCode,KeyArea
    drop table tb
    drop table tt
    drop view fcstr
    drop function dbo.fc_str
      

  2.   

    非常感谢两位的指点,thanks! 尤其是:xeqtr1982(ShaKa)