这个基本上很难做到,必须用cursor !

解决方案 »

  1.   

    1,建自定义函数
    Create function getstr(@id Nchar(100))
    returns Nvarchar(4000)
    as 
    begin
    declare @str Nvarchar(4000),@分隔符 Nvarchar(10)
    set @分隔符=N','
    set @str=N''
    select @str=@str+rtrim(Col)+@分隔符 from 表名
    --------------------------------^^^^要相加的字段名
    where 相加条件字段=@id
    set @str=left(@str,len(@str)-1)落 ---却除最后一个分隔符
    return @str
    end
    GO2,调用
    select 条件字段,dbo.getstr(条件字段) from 表名 group by 条件字段
      

  2.   

    先建立一个函数
    CREATE  FUNCTION GETSTR(@companyid  NVARCHAR(20))
    RETURNS NVARCHAR(200)
    AS
    BEGIN
      DECLARE @str NVARCHAR(200)
      
      SET @str=''  SELECT @str = @str+ROOMID+',' 
      FROM 表2 WHERE companyid =@companyid   SET @str = LEFT(@str,LEN(@str)-1)
      RETURN @str
    END然后调用
        select A.id,A.name,dbo.getstr(id) 
        FROM 表1 A INNER JOIN 表2 B on B.companyid = A.id 
        Where id = 224
      

  3.   

    create function getstr(@id int)
    returns varchar(8000)
    as 
    begin
    declare @str varchar(8000)
    set @str=''
    select @str=@str+','+rtrim(tanweihao) from 表2 where company=@id
    select @str=right(@str,len(@str)-1) where @str<>''
    return @str
    end
    go--调用:
    select *,dbo.getstr([id]) tanweihao  from 表1
      

  4.   

    select A.id,max(A.name) company,max(dbo.getstr(A.id)) tanweihao 
        FROM 表1 A INNER JOIN 表2 B on B.companyid = A.id 
        Group by id 
      

  5.   

    改为这样调用
    select *,dbo.getstr(id) tanweihao FROM 表1