表a
Fname       Fvalue
基本工资     2000
奖金         1000
加班天数       3
加班费        1001.请问如果我要 得出 基本工资+奖金+加班天数*加班费的结果 怎么得出 莫非是吧fvalue一个个取出 然后计算?2.如果 我有一个“基本工资+奖金+加班天数*加班费”的string  有办法比较快速的得出结果吗?ps:Fname 不是确定的 可编辑

解决方案 »

  1.   


    select 基本工资+奖金+加班天数*加班费 from
    (
    select case Fname when '基本工资' then Fvalue else 0 end  as 基本工资,
    select case Fname when '奖金' then Fvalue else 0 end as 奖金,
    select case Fname when '加班天数' then Fvalue else 0 as 加班天数,
    select case Fname when '加班费' then Fvalue else 0 as 加班费 from a
    )
    t
      

  2.   


    ----
     这样是对 但如果 Fname不确定怎么样
      

  3.   


    create proc oneselect(@par1 varchar(50),@par2 varchar(50),@par3 varchar(50),@par3 varchar(50))
    as
    declare @sql varchar(4000)
    set @sql='select '+ @par1 + @par2 + @par3*@par4 +' from(
    select case Fname when '+ @par1 +' then Fvalue else 0 end  as '+ @par1 + 
    ',select case Fname when '+ @par2 +' then Fvalue else 0 end as '+ @par2 +
    ',select case Fname when '+ @par3 +' then Fvalue else 0 as '+  @par3 + 
    ',select case Fname when '+ @par4 +' then Fvalue else 0 as '+ @par4 + ' from a)'
    exec(@sql)
      

  4.   

    Fname 可以是钱数,还可以是天数,又没有字段标识,太
      

  5.   

    ok 我承认我的sql烂 其实这2个字段我是从我正式那张表提取出来的 正式的那张表 有fType字段 来标明是 文本,货币,数值,逻辑。我取2个字段出来 主要是想求一个计算方法 但也谢谢你回答和指教!
      

  6.   

    这个是列转行问题,你到sql板块搜一下,这个需要用动态sql 拼接而成。。