执行累积总和直到达到一定限制的脚本我的数据表以 3 列开头,Date、Test_Qty 和 Fail_Qty。
我正在为 2 个新列 Cumulative_Sum_Test_Qty 和 Cumulative_Fail_Qty 创建脚本。
Cumulative_Sum_Test_Qty列中,测试数量为当前行到上一行的累计和,满足300个数量,形成一批数据。
在Cumulative_Sum_Fail_Qty中,失败数量是当前行到前几行的累计和,对应发生的累计和测试数量。
在为两列的累计和创建脚本时,我遇到了困难。
任何人都可以在这里提供帮助
脚本回复:执行累积和直到达到一定限制的脚本谢谢吉姆。 有用。
我研究了你提供的脚本逻辑。 这有助于我增长知识。
感谢您的帮助和指导。
谢谢你。
回复:执行累积和直到达到一定限制的脚本好的.....我很欣赏更清晰的定义。下面的脚本似乎适用于您的测试数据
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Cumulative_Sum_Test_Qty" );
dt << New Column( "Cumulative_Sum_Fail_Qty" );
dt:Cumulative_Sum_Test_Qty[1] = dt:Test_Qty[1];
dt:Cumulative_Sum_Fail_Qty[1] = dt:Fail_Qty[1];
holdTest = dt:Test_Qty[1];
holdFail = dt:Fail_Qty[1];
For( theRow = 2, theRow <= N Rows( dt ), theRow++,
If( dt:Cumulative_Sum_Test_Qty[theRow - 1] > 300,
holdTest = :Test_Qty[theRow];
holdFail = :Fail_Qty[theRow];
curRow = theRow;
While( holdTest < 300,
curRow = curRow - 1;
holdTest = holdTest + :Test_Qty[curRow];
holdFail = holdFail + :Fail_Qty[curRow];
);
dt:Cumulative_Sum_Test_Qty[theRow] = holdTest;
dt:Cumulative_Sum_Fail_Qty[theRow] = holdFail;
,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Cumulative_Sum_Test_Qty[theRow - 1] + dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Cumulative_Sum_Fail_Qty[theRow - 1] + dt:Fail_Qty[theRow];
)
);
回复:执行累积和直到达到一定限制的脚本谢谢吉姆。
我需要的是超过300后,在下一行,新的累计和再次发生,直到超过300,......
这是一种向后移动的累积和.....这是我卡住的地方。

回复:执行累积和直到达到一定限制的脚本这是一个解决方案。我假设一旦你超过 300,你就会重新启动。如果您需要在超过 300 之前停止,逻辑更改非常简单。
Names Default To Here( 1 );
dt = Current Data Table();
dt << New Column( "Cumulative_Sum_Test_Qty" );
dt << New Column( "Cumulative_Sum_Fail_Qty" );
dt:Cumulative_Sum_Test_Qty[1] = dt:Test_Qty[1];
dt:Cumulative_Sum_Fail_Qty[1] = dt:Fail_Qty[1];
holdTest = dt:Test_Qty[1];
holdFail = dt:Fail_Qty[1];
For( theRow = 2, theRow <= N Rows( dt ), theRow++,
If( dt:Cumulative_Sum_Test_Qty[theRow - 1] > 300,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Fail_Qty[theRow];
,
dt:Cumulative_Sum_Test_Qty[theRow] = dt:Cumulative_Sum_Test_Qty[theRow - 1] + dt:Test_Qty[theRow];
dt:Cumulative_Sum_Fail_Qty[theRow] = dt:Cumulative_Sum_Fail_Qty[theRow - 1] + dt:Fail_Qty[theRow];
)
);