个人税率计算问题

在个人所得税计算方面比较繁琐,需要根据国家当下规定,有基数(如超过2000的分才需要缴税)、然后基数获取笛卡尔值,下面是写了一个这样的计算方法,可以根据Update利用游标的属性进行完成。

update 员工
set 税金=(应发工资-下限)*税率/100+基础数,
实发工资=应发工资-税金
from
员工 a
left join 税率 b
on a.应发工资 > b.下限
and a.应发工资 <= b.上限

declare @t table(t_Name varchar(50),t_Salary decimal(10,2),t_Leave_Salary decimal(10,2),t_Left_Salary decimal(10,2))
insert into @t(t_Name,t_Salary) select '张三',800 union all select '李四',500

--SELECT * from tb_SPT_Rontgens_SalaryPersonalIncomeTax (税率表)

update @t
set t_Leave_Salary=(t_Salary-SPT_MinWage)*SPT_SalaryPersonalIncomeTax/100+SPT_deduction
from @t a
left join tb_SPT_Rontgens_SalaryPersonalIncomeTax b
on a.t_Salary > b.SPT_MinWage
and a.t_Salary <= b.SPT_MaxWage

update @t set t_Left_Salary=t_Salary-t_Leave_Salary

select * from  @t


备注:SPT_SalaryPersonalIncomeTax (个税税率)

SPT_deduction(速算扣除额)

tb_SPT_Rontgens_SalaryPersonalIncomeTax(税率表)

SPT_MinWage(工资区间下限)

SPT_MaxWage(工资区间下限)

posted @ 2010-04-23 15:58  autumnyuhe  阅读(217)  评论(0编辑  收藏  举报