现在需要做一个计税的功能,其中有一个专项附加扣除的数据,每个月可能有,可能没有,但是最晚一个月就是需要取的数据
比如张三有567月份的专项附加扣除分别为1000,2000,3000,那在9月份计算税的时候就要取7月的3000专项附加扣除去计算,
专项附加表SPECIALDEDU,有个年月字段是YyYyMM类型,202206,202207这样,计算税金的时候可以获取到202209跟人员编码
存储过程中应该怎么写才能获取最新的3000
把你的月份传进去,然后循环依次往下查询,如果能查到数据就返回,大致这样
v_code --获取的人员编码
v_SPECIALDEDU NUMBER := 0;
v_num NUMBER :=0;
loop
select count(1) into v_num
from SPECIALDEDU s where
s.month=v_caldate and s.code=v_code ;
if(v_num=0 )
v_caldate:=add_Months(v_caldate,-1);
else
--获取最新数据
select 专项附加字段 into v_SPECIALDEDU from SPECIALDEDU s where
s.month=v_caldate and s.code=v_code;
EXIT;
end if;
end loop;