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

转载 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

J2EE vs. NET, Java vs. C#:比较公正的评价

J2EE vs. NET, Java vs. C#:Since theres been plenty of discussion on these topics, I thought Id write...
  • Nightmare
  • Nightmare
  • 2003-06-02 11:42:00
  • 1903

自定义工资项和公式

1,自定义工资项 定义工资公式的功能是企业工资计算中常见的做法,这其实就像Excel系统中的公式一样的普通。但某位技术员在要自己开发的程序中增加公式系统,那就要开发一个像样的公式解释逻辑了,该工...
  • u014611033
  • u014611033
  • 2014-04-19 12:58:46
  • 1334

JS实现用户自定义计算公式

序号员工工种基本工资岗位补贴职务工资加班天数保险费实发工资1per1高级2per2普通3per3高级4per4普通5per5高级 如上面表格,要做一...
  • Faks8622
  • Faks8622
  • 2010-02-06 16:30:00
  • 4906

金蝶 工资 公式计算结果相差一分钱的处理方法及过程详解

  • 2018年01月25日 17:57
  • 1KB
  • 下载

PAT基础编程 5-10 计算工资 (15分)

5-10 计算工资 (15分)某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职...
  • qq_32999795
  • qq_32999795
  • 2016-12-19 09:23:46
  • 935

好用的人事工资软件,

  • 2010年10月28日 21:56
  • 4.34MB
  • 下载

工资计算方法

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

C#利用脚本做工资公式编辑器

  • 2010年08月03日 23:21
  • 367KB
  • 下载

工资系统设计两种方法

通用的系统:特点:    一:一个项目是另外一个项目的子集    二:一个项目可以任意于进行多项进行运算。    三:一个项目根据条件限制不同而结果不同。工资系统实现的用户操作界面设想:文字描述:对于...
  • wo20llg
  • wo20llg
  • 2004-05-19 13:28:00
  • 917

5-10 计算工资 (15分)

某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工...
  • qq_26570353
  • qq_26570353
  • 2016-04-02 10:58:17
  • 1953
收藏助手
不良信息举报
您举报文章:实现工资自定义公式的计算方法示例
举报原因:
原因补充:

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