问题描述
面这个表的数据只是个例子,表中的LaveRate都是不固定的(表内数据修改不影响程序运行)---------------------------------IdLaveRate---------------------------------15005%2200010%3500015%42000020%----------------------------------暂定某城市市民基本工资1600假设有个人工资为X如果定义y=x-1600假如数据库中数据如上表if0<y<=500个人所得税按收超出部分的5%收取if500<y<=2000个人所得税按收超出部分的10%收取if2000<y<=5000个人所得税按收超出部分的15%收取if5000<y<=20000个人所得税按收超出部分的20%收取比如现在有个人工资为301600那么他应该交的税收是25+200+750+4500这里只是举个算税收的例子要您写个函数或者存储过程返回个人工资所得税
解决方案
解决方案二:
楼主算的说收好象有问题,既然是按超出部分算那么,工姿301600应该交税为:500*5%+(2000-500)*10%+(5000-2000)*15%+(20000-5000)*20%+(301600-5000)*x%这样的话下面的存储过程就行了:CREATEPROCEDUREdbo.GetShui@GongziMoney,@ShuiMoneyOUTPUTASDECLARE@PreLeveINTDECLARE@PreRateMoneySET@PreLave=0SET@Shui=0SELECT@Shui=@Shui+(Lave-@PreLave)*Rate,@PreLave=Lave,@PreRate=RateFROMRateTableWHERELave<GongziSET@Shui=@Shui+(@Gongzi-@PreLave)*@PreRateGO
随手敲的,可能有错。
解决方案三:
厉害了。看来偶还的好好学习啊。谢谢
解决方案四:
顺道问下,5%是以什么类型保存在数据库里的啊?小数0.05?
解决方案五:
字段Numeric[(p[,s])]
解决方案六:
搞不懂原题。。什么意思啊。。。讲讲。。。如果工资是301600是求他的税额是多少吗??
解决方案七:
也就是说用小数存了?谢啦