我有一个简单的表tblWorkedHours
ID int,
PayPeriod int,
MonthEnd date,
WorkedHours float,
ContractHours float,
OwedHours float,
PrvsOwedHours float,
FinalOwedHours float
我有两个名为PrvsOwedHours,FinalOwedHours的计算列。
FinaOWedHours = OWedHOurs+PrvsOwedHours.
PrvsOwedHours is the Previous months FinalOwedHours, that is carried forward into the next month.
但是这样做的最佳方法是什么......我应该每个月创建一个新表并加入这两个表,或者是他们通过递归方式进行的一些方法。
我没有测试数据......
答案 0 :(得分:0)
大多数数据库都支持窗口函数,其中大多数都支持累积和。您可以按以下方式进行计算:
select t.*,
sum(OwedHours) over (order by monthend) - OwedHours as PrevOwedHours,
sum(OwedHours) over (order by monthend) as FinalOwedHours
from table t;