declare @sql varchar(8000)
set @sql = 'select Name '
select @sql = @sql + ' , max(case Subject when ''' + 字段 + ''' then Result else 0 end) [' + 字段 + ']'
from (select distinct 字段 from 字段表) as a
set @sql = @sql + ' from tb group by name'
exec(@sql) 如上面代码我想把用汉字写的位置用一些来变量代替,请问要怎么写?

解决方案 »

  1.   

    定义变量
    然后直接把汉字部分替换成变量就可以了.
    最简单的测试方法是print你的语句...
      

  2.   


    declare @sql varchar(8000) 
    declare @clounm  varchar(20)
    declare @tablename  varchar(20)
    set @sql = 'select Name ' 
    select @sql = @sql + ' , max(case Subject when ''' + @clounm  + ''' then Result else 0 end) [' +@clounm  + ']' 
    from (select distinct @clounm from @tablename) as a 
    set @sql = @sql + ' from tb group by name' 
    exec(@sql) 
      

  3.   


    这样的代码已经试过,不成功。
    错误提示如下必须声明表变量 "@tablename"。
      

  4.   

    不好意思  from (select distinct @clounm from @tablename) as a  這個剛才沒有加引號declare @sql varchar(8000)
    declare @clounm  varchar(20)
    declare @tablename  varchar(20)
    set @sql = 'select Name ' 
    select @sql = @sql + ' , max(case Subject when ''' + @clounm  + ''' then Result else 0 end) [' +@clounm  + ']' +'from (select distinct'+@clounm+' from'+ @tablename+') as a '
    set @sql = @sql + ' from tb group by name' 
    exec(@sql) 
      

  5.   

    提示关键字 'from' 附近有语法错误。
      

  6.   

    你用 print(@sql) 看一下最后的sql语句是否正确,注意语句之间要有空格。
      

  7.   

    use northwind
    declare @str varchar(100)
    ,@strtable varchar(100)set @strtable='orders'
    set @str='select * from ' + @strtable
    exec (@str)