我被困在这种情况下,我需要更新员工的加班积分。在批准Offset请求后,加班费将根据OvertimeCredits
表更新。存储过程,更新消耗和日期消耗逻辑
CTORequest表
CREATE TABLE CTORequest
(
CTORequestID INT
, EmployeeID INT
, ApproverID INT
, CTOStatusID INT
, DateCreated DATETIME
, CTOStartDatetime DATETIME
, CTOEndDatetime DATETIME
, NoOfHours REAL
, ReportBackToWork DATETIME
, Reason VARCHAR(250)
, Remarks VARCHAR(MAX)
, DateProcessed DATETIME
)
OvertimeCredits表
CREATE TABLE OvertimeCredits
(
OvertimeCreditsID INT
, EmployeeID INT
, OvertimeID INT
, OvertimeCredits FLOAT
, DateExpired DATETIME
, IsExpired BIT
, Consumed FLOAT
, DateConsumed DATETIME
)
在用于偏移的请求时,存在用于NoOfHours一列。这个NoOfHours将被扣除到OvertimeCredits
表。请注意,每位员工在OvertimeCredits中都有许多条目。员工的Total OvertimeCredits可以通过使用OvertimeCredits表中的id来获得,其中id等于员工ID。
如果NoOfHours大于员工OvertimeCredits的总和,则无需验证。只有更新逻辑。
请参阅此琴:
http://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=426411d4ace6e374ddd3916a05a8f03a