declare @a varchar(8000)
set @a=''
select @[email protected]+','+f_departname from 表 where f_messid='01'select right(@a,len(@a)-1) 结果

解决方案 »

  1. 不用游标。--1.创建一个合并的函数
    create function fmerg(@id int)
    returns varchar(8000)
    as
    begin
    declare @str varchar(8000)
    set @str=''
    select @[email protected]+','+f_departname from m_depart where [email protected]
    set @str=right(@str,len(@str)-1)
    return(@str)
    End
    go--调用自定义函数得到结果
    select distinct f_messid,dbo.fmerg(id) from m_depart
      

  2. 或:create function getstr(@i varchar(10))
    returns varchar(8000)
    as 
    begin
    declare @str varchar(8000)
    set @str=''
    select @[email protected]+','+rtrim(f_departname) from 表 where [email protected]
    set @str=right(@str,len(@str)-1)
    end--调用:
    select f_messid1,dbo.getstr(f_messid) f_departname from 表
      

  3. 想用游标当然也行了!declare @temp varchar(100)
    declare @temp1 varchar(200)
    DECLARE Employee_Cursor CURSOR FOR
    SELECT f_departname FROM m_depart where f_messid='01'order by f_messid 
    OPEN Employee_Cursor
    FETCH NEXT FROM Employee_Cursor into @temp1 
    WHILE @@FETCH_STATUS = 0
    BEGIN
       set @[email protected][email protected]+','
       FETCH NEXT FROM Employee_Cursor into @temp1
    END
    CLOSE Employee_Cursor
    DEALLOCATE Employee_Cursor
    print @temp
      

aliyun

类似问题 »