declare @sql varchar(2000)
set @sql=''
select @sql=@sql+name+' as ['+desc+'],'
from 表2
set @sql=left(@sql,len(@sql)-1)exec ('select '+@sql+' into 表3 from 表1')
能否解释一下!

解决方案 »

  1.   

    --声明变量
    declare @sql varchar(2000)
    --设置初值
    set @sql=''
    --给变量赋值,即从表2中取name字段的值,取其别名为desc
    select @sql=@sql+name+' as ['+desc+'],'
    from 表2
    --把别名后面的逗号去掉['+desc+'],--这个逗号
    set @sql=left(@sql,len(@sql)-1)
    --执行SQL语句,动态SQL语句要用exec执行
    exec ('select '+@sql+' into 表3 from 表1')
      

  2.   

    set @sql=left(@sql,len(@sql)-1)
    这句没有解释哦,还有,如果表1是几个表查旬出来的呢!
    比如:
      表1的内容是
    select a.el_no,b.el_size,b.mt_qty,a.unit 
    from 表4 a 
    left join 表5 b on 表4.el_no=表5.el_no
    where a.el_no like '01%'
    我改怎么写
      

  3.   

    用Print来进行显示,再结合上述语句分析即可