declare @i int
declare @columnvalue varchar(100)   select @columnvalue=convert(varchar(3),i)
exec('select w'+ @columnvalue+ ' from podtl where item = 10001')

解决方案 »

  1.   

    declare @i int
    declare @weeksalesqty floatexec(select w'+convert(varchar(3),i) + 'as wi into ls from podtl where item = 10001)set @weeksalesqty = select wi from ls
      

  2.   

    to leimin(黄山光明顶):select @columnvalue=convert(varchar(3),i)
    exec('select w'+ @columnvalue+ ' from podtl where item = 10001')
    你那是干什么?换一个参数表示有什么意义?
    人要的是名为 'w' + convert(varchar(2),i) 的字段的值。
      

  3.   

    declare @i int
    declare @weeksalesqty float
    declare @sql nvarchar(4000)
    set @sql='select @qtyout=w'+convert(varchar(3),i) + ' from podtl where item = 10001'
    exec sp_executesql @sql,N'@qtyout float output',@weeksalesqty output
    select @weeksalesqty
      

  4.   

    采用sp_executesqlDECLARE @sql nvarchar(500)exec('select w'+convert(varchar(3),i) + ' from podtl where item = 10001')
      

  5.   

    不好意思,不小心提交了。
    ------------------------------------------------------
    采用sp_executesqlDECLARE @sql nvarchar(500), 
    @i int,
    @weeksalesqty floatSET @i=3
    SET @sql=N'SELECT @R=w'+convert(varchar(3),@i) + ' FROM podtl WHERE item = 10001'EXECUTE sp_executesql @sql,N'@R float OUTPUT',@weeksalesqty OUTPUT
    SELECT @weeksalesqty
      

  6.   

    我是把动态SQl语句产生的结果存到临时表中后在取出来的
      

  7.   

    create function dbo.f_x(@i int) returns table as 
    return (select c1=case @i when 1 then w1 when 2 then w2 when 3 then 3 end from podtl where item = 10001)
    godeclare @i int, @weeksalesqty float
    select @weeksalesqty=c1 from f_x(@i)
      

  8.   

    select @weeksalesqty=case @i when 1 then w1 when 2 then w2 when 3 then 3 ... end from podtl where item = 10001