现在我有一个工资表,其中有基本工资,各种奖金,罚金,所得税,实发工资等
所得税的计算应该是基本工资加上奖金罚金啥的计算之后的一个结果A再依据所得税公式计算而得
实发工资应该是刚才算出来那个结果A再减去所得税的结果
有点麻烦,希望您能详细给我解答一下,谢谢了

解决方案 »

  1.   

    用case when,大致写法参考如下:create table 税率表 (
    rank int ,
    baseIncome numeric(18,2) , 
    overmin numeric(18,2),
    overmax numeric(18,2) , 
    taxs numeric(18,6)
    )insert 税率表 select
     1, 2000, 0 , 1000 , 0.05
    union all select 
     2, 2000, 1000 , 3000 , 0.1
    union all select 
     3, 2000, 3000 , 6000 , 0.15
    union all select 
     4, 2000, 6000 , 10000 , 0.2
    union all select 
     5, 2000, 10000, 15000 , 0.25gocreate proc pr_计算税金
    @income numeric(18,2)
    asselect sum(case when @income>baseIncome+overmax then overmax-overmin else @income-baseIncome-overmin end *taxs) as 税金
    from 税率表
    where baseIncome+overmin<=@incomegoexec pr_计算税金 2500
    --25
    exec pr_计算税金 3500
    --100
    exec pr_计算税金 9500
    --1000exec pr_计算税金 12000
    --1500