工资核算

时间:2018-06-26 12:47:32

标签: sql-server tsql

我需要你帮助我。我必须执行一个程序来计算Management Sql Server 2014中的工资。该程序应如下所示: 薪水是薪金总额和带薪假期的总和:Sal =总薪金+带薪假日

要计算带薪假期,我们需要: 前六个月的工资:

Sal_6 + Sal_5 + Sal_4 + Sal_3 + Sal_2 + Sal_1 =基础

Sal_6 = GrossSal_6 + Paid_Holiday_6(如上所述) ... 前六个月的工作天数或假期天数:

NOdays_6 + NOdays_5 + NOdays_4 + NOdays_3 + NOdays_2 + NOdays_1 = SumOfDays

带薪休假是:Paid_Holiday = BASE / SumOfDays * NOdays。

从数据库中,我有以下表格:

  

条目(Identry,Gross_Salary,NOdayworked,Date,IDEmplyee)

     

员工(IDEmplyee,姓名,工作日期)

     

假日(IDHoliday,StartDate,FinalDate,IDEmployee)

该员工拥有一份资历证书,其中包含前任雇主的最后6份工资。

  

证书(IdCertificate,日期,Gross_Salary,NOdaywork,Pad_Holiday,NOdays,IDEmployee)

因为我需要最近的带薪假期和工资来形成总工资,所以我认为我应该使用临时表。该表将保留证书中的数据和条目中的数据

到目前为止,我已经尝试过以下存储过程:

create proc payroll
 @idemployee int
as
create table #tmp(  id int identity(1,1) primary key, date1 date, grosssalary money,  idemployee int, nodaysworked int, paidholiday money, noofdays int)
insert into #tmp ( date1 , grosssalary ,  idemployee , nodaysworked , paidholiday , noofdays )
Select Top 6  Date,
Gross_Salary,
IDEmployee,
NOdayworked,
Paid_Holiday,
IDEmployee
 from Certificate 
 WHERE IDEmployee = @idemployee
ORDER BY Date asc

在那之后,我必须为每个带薪假期拿走最后6笔薪水 Paid_Holiday = BASE / SumOfDays * NOdays,但我不知道该怎么做。我想到了光标或其他东西。 PS:如果您听不懂,请告诉我。我的母语不是英语(同样,该程序不适用于所有国家/地区。 该程序在罗马尼亚有效)

0 个答案:

没有答案