Мне нужна твоя помощь. Мне нужно сделать программу, которая рассчитывает заработную плату в Management Sql Server 2014. Программа должна быть примерно такой:
Заработная плата - это сумма брутто-зарплаты и оплачиваемых отпусков: Sal = Gross_ Salary + Paid_Holiday
Для расчета праздника Paid_ нам нужно:
Заработная плата за предыдущие 6 месяцев:
Sal_6 + Sal_5 + Sal_4 + Sal_3 + Sal_2 + Sal_1 = База
С Sal_6 = GrossSal_6 + Paid_Holiday_6 (как я уже говорил выше)
...
Количество рабочих или праздничных дней за предыдущие 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, NOdayworked, Paid_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: Если вы не поняли, пожалуйста, дайте мне знать. Мой родной язык не английский (также эта программа доступна не для всех стран).
Программа действует в Румынии)