我正在处理一组交易和金额,我想创建一个新的金额列,具有以下逻辑 -
以下是我正在寻找的一个例子 -
Item Record Old amount New Amount Running Total
1 1 100 100 100
1 2 -100 -100 0
1 3 -200 0 0
1 4 500 500 500
1 5 -300 -300 200
1 6 300 300 500
我的跑步总数从零开始。
我的第一笔金额是100,而不是总数< 0,所以我通过并设置了 新金额为100。
我的第二个金额是-100,并且这不会使我的总计100到<&lt; 0,所以我将新金额设置为-100。
我的第三个数额是-200。这将使运行总计0到-200,&lt;因此,我将新金额设为0.
我的第四笔金额是500.它会通过。
我的第五个数额是-300。这将使运行总计500到200,仍然> = 0.它将通过。
我的第六笔金额是300.它会通过,最终总金额为500。
困难的部分是像这里的纪录五。为了知道最终运行总数不会低于零,您需要计算记录3的新总数。
我认为你可以通过设置公共表表达式来进行递归查询,但我已经知道如何创建它。如果可能的话,我想避免使用游标。
答案 0 :(得分:0)
这是一个WINDOW FUNCTION
解决方案,其中包含CASE
语句。
查找LAG