实现工资自定义公式的计算方法示例

转载 2006年07月17日 11:34:00

--测试数据  
  create   table   公式表(工资项目   sysname,项目代码   sysname,是否打印   bit,计算公式   varchar(1000))  
  insert   into   公式表  
  select   '基本工资','gz1',1,null  
  union   all   select   '考勤','gz2',1,null  
  union   all   select   '工龄','gz3',1,null  
  union   all   select   '奖金','gz4',1,null  
  union   all   select   '应发工资','gz5',1,'gz1+gz2+gz3+gz4'  
  union   all   select   '养老保险','gz6',0,null  
  union   all   select   '应纳税收入','gz7',1,'case   when   gz5-gz6>0   then   gz5-gz6   else   0   end'  
  union   all   select   '个人所得税','gz8',1,'case   when   gz7<500   then   gz7*.05   else   case   when   gz7>=500   and   gz7<2000   then   gz7*.1-25   else   gz7*.15-125   end   end'  
  union   all   select   '实发工资','gz9',1,'gz5-gz6-gz8'  
   
  create   table   工资表(职员   varchar(10),gz1   int,gz2   int,gz3   int,gz4   int  
  ,gz5   int,gz6   int,gz7   int,gz8   int,gz9   int)  
  insert   into   工资表(职员,gz1,gz2,gz3,gz4,gz6)  
  select   '张三',1000,1,1,100,100  
  union   all   select   '李四',1200,1,2,150,150  
  go  
   
  --工资计算的存储过程  
  create   proc   p_calc  
  as  
  declare   @s1   varchar(8000),@s2   varchar(8000),@s3   varchar(8000)   ,@i1   int,@i2   varchar(20)  
   
  select   @s1=''
  select @s2=''
  select @s3=''
 Select @i1=0  
  select   @i1=@i1+1,@i2='@'+cast(@i1   as   varchar)  
  ,@s1=@s1+','+@i2+'   varchar(8000)'  
  ,@s2=@s2+','+@i2+'=''update   工资表   set   ['+项目代码+']=('+计算公式+')'''  --這裡放到一行
  ,@s3=@s3+'  
  exec('+@i2+')'  
  from   公式表   where   计算公式   is   not   null  
  select   @s1=substring(@s1,2,8000),@s2=substring(@s2,2,8000)   --4改為2
  exec('declare   '+@s1+'  
  select   '+@s2+'  
  '+@s3)  
  print 'declare   '+@s1+'     select   '+@s2+'     '+@s3
  go  
   
  --调用存储过程,实现工资计算  
  exec   p_calc  
  go  
   
  --显示计算结果  
  select   *   from   工资表  
  go  
   
  --删除测试环境  
  drop   table   公式表,工资表  
  drop   proc   p_calc

 

具体见此贴:http://community.csdn.net/Expert/topic/4797/4797593.xml?temp=.2456629

相关文章推荐

solr入门之自定义排序之构建自己的权重计算方法及相应的排序字段

需求: 1、需求:调整排序算法改为综合得分排名 2、规则: ①搜索方式:先过滤,后排序 ②搜索字段:用户昵称 ③匹配方式:分词完全匹配 ④排序按照综合得分高低进行排序展示 综合得...

工资计算方法

  • 2007年07月29日 18:10
  • 2KB
  • 下载

Oracle 全表扫描成本计算方法和公式

Oracle 全表扫描成本计算方法和公式
  • Seandba
  • Seandba
  • 2017年07月06日 15:31
  • 330

计算方法之龙贝格公式

  • 2011年11月24日 22:24
  • 792B
  • 下载

计算方法 Newton-Cotes公式

  • 2009年11月27日 12:40
  • 1.75MB
  • 下载

补课之web并发数的计算方法及计算公式

与并发用户数相关的概念还包括“并发用户数”、“系统用户数”和“同时在线用户数”,下面用一个实际的例子来说明它们之间的差别。          假设有一个OA系统,该系统有2000个使...

CP-CPK-PP-PPK定义与计算方法

  • 2017年07月08日 15:45
  • 507KB
  • 下载

关于查询current_scn导致SCN增进及SCN的计算方法示例

1.关于current_scn: Oracle10g在v$database视图中引入了current_scn,这个SCN来自底层表,代表当前的SCN,current_scn的查询会直接导致SCN的增进...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实现工资自定义公式的计算方法示例
举报原因:
原因补充:

(最多只允许输入30个字)