如何用SQL语句,将搜索的多行记录变为一行记录??列如:table Userid    UserID     BoardID
1     test1      1
1     test1      3
1     test1      5
2     test2      1我现在需要搜索出UserID=test1所管理的所有BoardID
得到的结果,我不需要多行,只需要一行.
形式为:
id    UserID     ManageBoardID
1     test1      1,3,5        (就是把所有的管理ID用逗号分隔)不知道有什么方法可以实现??

解决方案 »

  1.   

    先将搜索的结果放入一个dataview中,然后:
    dim str as string
    for i=0 to dataview1.count-1
      str &=dataview1.item(i).row("BoardID") &","
    next
    最后str就是你想要的值了.
      

  2.   

    DataTable dt=...
    string str="";
    if (dt.Rows.Count>0)
    {
    for (int i=0;i<dt.Rows.Count;i++)
     {
       str+="'"+dt.Rows[i]["id"].Tostring()+"',";
      }
    }
    str 就是1,2,3,这种形式,如果要用 select ...in(str)这种形式
    还需要加上str.SubString(0,str.Length-1);
      

  3.   

    用存储过程也可以实现.'set sqlTemp=strTemp+查询出的列,return sqlTemp'
      

  4.   

    写一个自定义函数,根据UserID,返回BoardID集合,如:select UserID,dbo.ufn_GetBoardID(UserID) from User
    (ufn_GetBoardID() 是你定义的函数)不过函数中要使用游标,效率低,建议你还是读出来然后在前台做吧
      

  5.   

    --创建函数
    CREATE function dbo.fn_11(@var_id int)
    returns varchar(100)
    as 
    begin
       declare @var varchar(100)
       set @var=''
       select @var=@var+cast(BoardID as varchar(10))+',' from [user] where id=@var_id
       if len(@var)>0
         set @var=left(@var,len(@var)-1)
      else
         set @var=' '
       return(@var)
    end select distinct id,UserID,dbo.fn_11(id) from [user]
    --结果
    1 test1 1,3,5
    2 test2 1
      

  6.   

    wtadminxjeri(P42.4) 
    你的方法很棒..谢谢你.