SQL--使用上一行计算的列

时间:2016-04-19 19:23:02

标签: sql teradata recursive-query

我正在尝试编写将创建下表的SQL:

_row   ID   ColA               ColB              ColC    Mov_Sum         Mult1 Mult2

 1     X   100                  2                .05     102.5             null  null
 2     X   101                  3                .1      206.6             null  null
 3     Y   a*206.6             b*206.6           .2      206.6*(a+b)+.2       a     b
 4     Y   a*(206.6(a+b)+.2)   b*(206.6(a+b)+.2) .4      (etc...)             a     b

当ID =' X'时,ColA,ColB和ColC是已知的并从现有表中选择。 Mov_Sum使用前一行的Mov_Sum + ColA + Col B + ColC计算。

当ID =' Y'时,必须使用前一行的Sum_ABC计算ColA,ColB和ColC。乘数" a"和" b"当ID =' Y'。

时,它们是不变的

我使用的是Teradata SQL,无法合并Lag / Lead语法。我已经成功计算了Mov_Sum(其中ID = X),通过创建一个中间表,我将表连接到自己的表(其中a._row> = b._row),然后按_row分组(Mov_Sum)。

当ID = Y时,我无法弄清楚如何合并它,因为现在ColA& ColB是之前Mov_Sum的产物,而不是已知值。

我认为这可能需要递归查询。有什么建议?

0 个答案:

没有答案