让我描述一下我当前面临的问题。
我有使用“存储过程”计算税表的软件。 在每一行中,我们显示公司拥有的每个员工的税金值。 该过程本身已绑定到表单,因此无论我们从中获得什么结果,都直接进入该表单。
请注意:不允许更改结果表的结构
问题(在此为简化表)的最后3列中存在。
EmployeeID | Special Deduction | Deductions Sum | Income Tax
当前,我必须为“特殊扣除”列添加一些额外的方案。
尽管计算正确进行,但工作量如此之重,以至于每个员工大约需要10-15秒来进行计算。想象一家有多个员工的公司,您明白了...超时...
试图重构它,我遇到了两个大问题。
问题1.-要填充“特殊扣除”列,我们需要考虑使用CASE的多种情况。每个CASE都是根据一些税额选择的。
但是,税收是一项非常繁重的SELECT,具有多个联接,但对于同一名雇员而言始终是相同的。
[如何可能为每个Employee计算一次,然后在每个CASE子句中使用它? ]
问题2--扣除额的计算是加上其他一些扣除额(例如社会保险)加上已经计算出的特殊扣除额。
我现在正在做的是重新计算整个特别税。
对于要计算的最终所得税,我们需要再次计算税收并减去扣除额。意思是说我们需要找到税(到目前为止已经发现了好多次(以及特殊扣除额和扣除额之和
[既然我们在前面的列中已经包含所有上述数据,那么我如何简单地从那里检索这些数据? ]
注意:所有列也具有多个SELECT,我无法完全擦除。意思是例如所得税,请具有SELECT(...)-[扣除额]。
注2:我目前正在尝试将所有内容移入函数中,以至少使代码更具可读性,但是我不确定这是否会对性能产生积极影响
注3:我不能使用游标,因为这将完全改变查询的结构...
PS:很抱歉我的文字太多,但是我在这里看不到太多的代码示例...