Je suis coincé dans ce scénario où j'ai besoin de mettre à jour les crédits de temps supplémentaire de l'employé. Les crédits pour heures supplémentaires sous OvertimeCredits
seront mis à jour une fois qu'une demande de compensation sera approuvée.Procédure stockée, mise à jour consommée et date consommée logique
tableau 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 tableau
CREATE TABLE OvertimeCredits
(
OvertimeCreditsID INT
, EmployeeID INT
, OvertimeID INT
, OvertimeCredits FLOAT
, DateExpired DATETIME
, IsExpired BIT
, Consumed FLOAT
, DateConsumed DATETIME
)
dans une requête en offset, il y a une colonne pour NoOfHours. Cette NoOfHours sera déduite du tableau OvertimeCredits
. Notez que chaque employé a beaucoup d'entrées dans OvertimeCredits. Total OvertimeCredits pour un employé peut obtenir en utilisant la somme de la table OvertimeCredits où ID est égal à l'ID de l'employé.
Non Nécessité de validation si NoOfHours est supérieur à la somme de l'employé OvertimeCredits. seulement la logique de mise à jour.
S'il vous plaît voir ce violon:
http://dbfiddle.uk/?rdbms=sqlserver_2016&fiddle=426411d4ace6e374ddd3916a05a8f03a