日期:2014-05-18  浏览次数:20676 次

一个SQL问题请教各位
有三个表a1,b1,c1.
a1. aid a b c  
  001 1 2 3
  002 4 4 5

b1. bid aid d e
  001 001 er er
  002 002 rr rr

c1. cid bid f g
  001 001 fe a
  002 001 f0 b
  003 001 122 c

现在我知道a1表的aid 我要的是b1表的记录且所有c1表里面含有c1.bid=b1.bid的记录的一个字段所有记录的字符连接在一起.
比如上面几个表可以直观看出 我有A1.aid 001 我要的结果是:b1 001,001 er er abc
急!~

------解决方案--------------------
SQL code
create function f_str(@user_name varchar(50))
returns varchar(500)
as
begin
    declare @ret varchar(500)
    set @ret = ''
    select @ret = @ret + g from c1 where bid=@user_name
    set @ret = stuff(@ret,1,1,'')
    return @ret
end
go

select b.*,dbo.f_str(bid)
from b1 b
group by bid,aid,d,e

------解决方案--------------------
SQL code

select
    distinct b.bid ,      b.aid         b.d  ,[g]=dbo.f_test(g)
from 
    b1 b
join
    c1 c on b.bid=c.bid
where
    
    b.aid='001'