递归加入表

时间:2014-06-18 23:11:40

标签: sql join recursion

我有一个简单的表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.

但是这样做的最佳方法是什么......我应该每个月创建一个新表并加入这两个表,或者是他们通过递归方式进行的一些方法。

我没有测试数据......

1 个答案:

答案 0 :(得分:0)

大多数数据库都支持窗口函数,其中大多数都支持累积和。您可以按以下方式进行计算:

select t.*,
       sum(OwedHours) over (order by monthend) - OwedHours as PrevOwedHours,
       sum(OwedHours) over (order by monthend) as FinalOwedHours
from table t;