以下是所附图片中的问题:
表格:
Row Col1 Col2 Col3 Result
1 10 20 100 30
2 20 40 200 60
3 30 60 0 240
4 40 70 0 180
5 30 80 50 110
6 25 35 0 65
7 10 20 60 30
因此,结果列是根据以下规则计算的:
如果col3>0,则结果=col1+col2
如果col3=0,则结果=sum(col2),直到col3>0+col1(其中col3>0)
例如,对于行=3,结果=60+70+80+30(来自第5行的col1,因为这里col3>0)=240对于行=4,结果=70+80+30(来自第5行的col1,因为这里col3>0)=180对于其他行也类似
1条答案
按热度按时间gfttwv5a1#
这回答了(正确的,我可以补充)问题的原始版本。
在sql中,可以使用窗口函数来表示这一点。使用累计和定义组,并使用其他累计和:
这里有一个db<>fiddle(使用postgres)。
注:
你的描述说
else
逻辑应该是:你的例子是:
在我看来,这似乎是最符合逻辑的: