특정 한도를 충족할 때까지 누적 합계를 수행하는 스크립트Date, Test_Qty 및 Fail_Qty의 3개 열로 시작하는 내 데이터 테이블입니다.
Cumulative_Sum_Test_Qty 및 Cumulative_Fail_Qty라는 2개의 새 열에 대한 스크립트를 만들고 있습니다.
Cumulative_Sum_Test_Qty 열에서 테스트 수량은 현재 행에서 이전 행으로 누적되어 300 qty를 충족하여 하나의 데이터 로트를 형성합니다.
Cumulative_Sum_Fail_Qty에서 실패 수량은 현재 행에서 누적 합계 테스트 수량에 해당하는 이전 행까지의 누적 합계입니다.
두 열의 누적 합계에 대한 스크립트를 만들 때 막혔습니다.
누구든지 여기에 도움을 줄 수 있습니까?
스크립팅Re: 특정 제한을 충족할 때까지 누적 합계를 수행하는 스크립트입니다.고마워 짐. 효과가있다.
나는 당신이 제공한 스크립트 로직을 연구합니다. 이것은 내 지식을 향상시키는 데 도움이 됩니다.
여러분의 도움과 지도에 감사드립니다.
고맙습니다.
Re: 특정 제한을 충족할 때까지 누적 합계를 수행하는 스크립트입니다.좋아요 .....더 명확한 정의에 감사드립니다.아래 스크립트는 테스트 데이터에서 작동하는 것 같습니다.
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];
)
);
Re: 특정 제한을 충족할 때까지 누적 합계를 수행하는 스크립트입니다.고마워 짐.
내가 필요한 것은 300을 넘은 후 다음 행에서 300을 넘을 때까지 새로운 누적 합계가 다시 발생하고...
일종의 후진 누적합입니다.....내가 막히는 곳입니다.

Re: 특정 제한을 충족할 때까지 누적 합계를 수행하는 스크립트입니다.여기에 해결책이 있습니다.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];
)
);