Alter proc pro_getName
as
declare @name varchar(200)
declare @where varchar(600)
set @where=''
declare mycursor cursor Scroll for select mtvnam from mtv v where v.mtvtyp='来源'
open mycursor
fetch next from mycursor into @name;
while(@@FETCH_STATUS=0)
begin
 set @where=@where+'max(case v.mtvnam when '''+@name+''' then ''是'' else ''否'' end) as '''+@name+''','
 print @where
fetch next from mycursor into @name;
end
close mycursor 
deallocate mycursor
begin
select @where,r.usrnam from USR r,usr_mtv t,MTV v where t.uid=r.ID and t.mid=v.id group by r.usrnam order by 1
end
结果是:  无列名        usrname
        case ...when    123而我想要的是 数学,语文 urname
             80     70   123为什么输出是第一个,而不是第二个那

解决方案 »

  1.   

    不是这个意思
    显示结果是: 无列名  usrname
      case ...when 123而我想要的结果是 数学,语文 urnam
                     80     20   123
      

  2.   

    创建游标时,select mtvnam from mtv v where v.mtvtyp='来源'如果 mtvnam 为空,后面的字符串拼接会有问题。
    你拼接 @where 的循环完成之后,print @where 看看正常不