A表
AID TextAB表BID  AID  TextBB表中的多条记录对应A表中的一条记录,现要求把A表输出为一个表格,但是多了一个字段,内容为该项记录对应B表记录的合集,该怎么做AID      TextA     TextB  
3        记录3     记录5*记录7*记录8

解决方案 »

  1.   

    CREATE FUNCTION JoinGroup
    (@id INT)
    RETURNS VARCHAR(1000)
    AS
    BEGIN
    DECLARE @s VARCHAR(8000)
    SELECT @s=ISNULL(@s,'') + '*' + TextB FROM B表 WHERE BID=@ID
    SET @s=STUFF(@s,1,1,'')
    RETURN @s
    END
    SELECT AID,TextA,dbo.JoinGroup(AID) FROM A表未测试可能有手误
      

  2.   

    --这样?
    create table a(AID int,TextA varchar(10))
    insert into a select 3,'记录3'create table b(BID int,AID int,TextB varchar(10))
    insert into b select 1,3,'记录5'
    union all select 2,3,'记录7'
    union all select 3,3,'记录8'
    gocreate function fc_str(@AID int)
    returns varchar(8000)
    asbegin
     declare @sql varchar(8000)
     set @sql=''
     select @sql=@sql+'*'+cast(TextB as varchar(100)) from b where AID=@AID
     return stuff(@sql,1,1,'')
    end
    goselect a.AID,TextA,dbo.fc_str(b.AID) as TextB from a,b where a.AID=b.AID group by a.AID,TextA,B.AIDdrop table a,b
    drop function dbo.fc_str
      

  3.   

    大大再帮个忙哈,修改一下那个函数,这个是问题答案类的,B表是答案,所以连接格式为按照顺序开头加ABCD,结尾加<br>,比方说结果是
    A 红<br>B 蓝<br>C 绿<br>