create proc vie_OrderWareAttrib2
 as
declare @s varchar(8000)
set @s=''
select @s =@s+ ','''+ordattrib_name+'''=(case when ordattrib_name='''+ordattrib_name+''' then attrib_value end )' 
from (select distinct ordattrib_name from vie_OrderWareAttrib) a
set @s='select order_id,ware_numid,ware_code '+@s+' from vie_OrderWareAttrib group by order_id,ware_numid,ware_code,ordattrib_name,attrib_value'
exec(@s)

解决方案 »

  1.   

    再一次请问大家,我其实的本意是想将
    set @s='select * from tablename' 
    exec(@s)
    这种方式执行出来的结果集提取出来而不光只是输出显示
    我查了很多好像用自定义函数或存储过程来实现,但是有一个很大的问题就是我这个tablename是一个动态的表,里面的列是不固定的,我无法预先定义临时表或表变量的结构,请问DBA们能有什么好办法吗!?
      

  2.   

    可以用全局临时表来实现,具体如下:
    set @s='select * into ##T from tablename' 
    exec(@s)
    select * from ##T
    这是tablename的数据就装载到全局临时表##T中了,就可以想用其他表一样使用##T了