我正在建立一个数据库,以帮助我跟踪员工请假和出勤记录。我创建了一个Employees表,其中包含员工列表以及从上一年开始的年度休假余额。然后我制作了一份“离开记录”表,其中列出了每个支付期间累计和使用的假期。一旦输入了该支付期间的休假余额,我就可以使用公式自动计算休假余额。我遇到的问题是让数据库自动计算向前滚动的休假余额。每个支付期间的余额将发生变化,但需要的价值是同一雇员在前一个支付期间的休假余额总额。
我在select查询中有以下SQL,它可以工作:
A/L Bal Fwd: IIf([Leave Records].[Pay Period]=1,[Employees].[Yearly A/L Bal Fwd],(SELECT [Leave Records].[A/L Balance to Date]
FROM [Leave Records] AS Dupe
WHERE Dupe.Employee = [Leave Records].Employee
AND Dupe.[Pay Period] = [Leave Records].[Pay Period]-1)) AS [A/L Bal Fwd]
FROM Employees INNER JOIN [Leave Records] ON Employees.ID = [Leave Records].Employee;
现在的问题是超过#1的任何支付期都不会返回值,除非已将数据输入[离开记录]表。我的目标是找到一种方法来自动计算[离开记录]中的值。[A / L Bal Fwd]以节省56名员工每个工资期间必须计算相同字段的时间。我尝试使用上面的Iif语句运行更新查询,但它只返回空值。我试图避免创建临时表并且运行太多查询以使其尽可能多地更新每个支付期。我必须采取更少的步骤来更新这些值并使每个支付期更正确。