case when有什么不好的吗?我觉得这样就行啊
用临时表也行吧

解决方案 »

  1.   

    可以用动态语句做。declare @str varchar(8000)
    declare @fcurrlevel varchar(100)
    set @fcurrlevel='3'
    declare @columname varchar(100)
    set @columname ='fstep'
    set @str='select fcode,@fcurrlevel,'+@columname+@fcurrlevel+' from tb where fcurrlevel='''+@fcurrlevel+''''
    exec(@str)
      

  2.   

    除了用Case fcurrlevel when 1 then fstep1 when 2 then fstep2.... end 這樣的語句外還有沒有別的方法查查pivot用法
    select * from a pivot (max(字段) for fcurlevel in ([1],[2],[3],[4]))
      

  3.   

    用Zoezs的動態語句,隻能查出一個當前fcurrlevel值的
    ChinaJiaBing的pivot方法還是沒明白,我查了幫助也沒有。我用的是MS SQLSERVER 2000。