我正在尝试编写将创建下表的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的产物,而不是已知值。
我认为这可能需要递归查询。有什么建议?