个人税率计算问题
在个人所得税计算方面比较繁琐,需要根据国家当下规定,有基数(如超过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(工资区间下限)