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) 如上面代码我想把用汉字写的位置用一些来变量代替,请问要怎么写?
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) 如上面代码我想把用汉字写的位置用一些来变量代替,请问要怎么写?
然后直接把汉字部分替换成变量就可以了.
最简单的测试方法是print你的语句...
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)
这样的代码已经试过,不成功。
错误提示如下必须声明表变量 "@tablename"。
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)
declare @str varchar(100)
,@strtable varchar(100)set @strtable='orders'
set @str='select * from ' + @strtable
exec (@str)