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为什么输出是第一个,而不是第二个那
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为什么输出是第一个,而不是第二个那
显示结果是: 无列名 usrname
case ...when 123而我想要的结果是 数学,语文 urnam
80 20 123
你拼接 @where 的循环完成之后,print @where 看看正常不