고객 송장 데이터가있는 테이블이 있습니다. 캐리 오버 카운터를 생성하여 고객의 인보이스에 특정 거래 유형이 얼마나 많이 있는지 찾기 위해 노력하고 있습니다. 거래가 더 이상 존재하지 않으면 카운터는 0으로 재설정해야합니다.Oracle - 증분 값
테이블 :
내가 달성하기 위해 노력하고 무엇+------------+-------------+----------------+----------+
| Invoice_Id | Customer_id | Transaction_id | Sequence |
+------------+-------------+----------------+----------+
| 253442 | 23334 | | 1 |
| 253443 | 23334 | | 2 |
| 253444 | 23334 | | 3 |
| 253445 | 23334 | | 4 |
| 1050646 | 23334 | | 5 |
| 8457065 | 23334 | | 6 |
| 9052920 | 23334 | | 7 |
| 9333044 | 23334 | | 8 |
| 9616743 | 23334 | | 9 |
| 9894491 | 23334 | | 10 |
| 10186697 | 23334 | | 11 |
| 10490938 | 23334 | | 12 |
| 10803986 | 23334 | 69709477 | 13 |
| 11132317 | 23334 | 72103163 | 14 |
| 11444923 | 23334 | | 15 |
+------------+-------------+----------------+----------+
:
+------------+-------------+----------------+----------+-----------+
| Invoice_Id | Customer_id | Transaction_id | Sequence | Carryover |
+------------+-------------+----------------+----------+-----------+
| 253442 | 23334 | | 1 | 0 |
| 253443 | 23334 | | 2 | 0 |
| 253444 | 23334 | | 3 | 0 |
| 253445 | 23334 | | 4 | 0 |
| 1050646 | 23334 | | 5 | 0 |
| 8457065 | 23334 | | 6 | 0 |
| 9052920 | 23334 | | 7 | 0 |
| 9333044 | 23334 | | 8 | 0 |
| 9616743 | 23334 | | 9 | 0 |
| 9894491 | 23334 | | 10 | 0 |
| 10186697 | 23334 | | 11 | 0 |
| 10490938 | 23334 | | 12 | 0 |
| 10803986 | 23334 | 69709477 | 13 | 1 |
| 11132317 | 23334 | 72103163 | 14 | 2 |
| 11444923 | 23334 | | 15 | 0 |
+------------+-------------+----------------+----------+-----------+
을 나는/내가 분석 기능을 사용할 수 있습니다 오라클 CTE를 가정?
감사합니다.
추가 : 리셋 transaction_count의
누적 합계 때 Tabibitosan method에 "그룹의"사용 transaction_count = 0
+------------+-------------+-------------------+----------+-----------+
| Invoice_Id | Customer_id | Transaction_Count | Sequence | Carryover |
+------------+-------------+-------------------+----------+-----------+
| 253442 | 23334 | 0 | 1 | 0 |
| 253443 | 23334 | 0 | 2 | 0 |
| 253444 | 23334 | 1 | 3 | 1 |
| 253445 | 23334 | 1 | 4 | 2 |
| 1050646 | 23334 | 0 | 5 | 0 |
| 8457065 | 23334 | 0 | 6 | 0 |
| 9052920 | 23334 | 2 | 7 | 2 |
| 9333044 | 23334 | 1 | 8 | 3 |
| 9616743 | 23334 | 0 | 9 | 0 |
| 9894491 | 23334 | 0 | 10 | 0 |
| 10186697 | 23334 | 0 | 11 | 0 |
| 10490938 | 23334 | 0 | 12 | 0 |
| 10803986 | 23334 | 1 | 13 | 1 |
| 11132317 | 23334 | 1 | 14 | 2 |
| 11444923 | 23334 | 0 | 15 | 0 |
+------------+-------------+-------------------+----------+-----------+
훌륭한 답변을 보내 주셔서 감사합니다. 송장 당 transaction_id가 not-null transaction_count로 대체되었다고 가정합니다. 이월은 1로 시작하는 대신 transaction_count로 시작합니다. 이월은 transaction_count 이전 행 + 트랜잭션 카운트 현재 행으로 계산됩니다. 트랜잭션 수의 0은 이전과 같이 carryover를 0으로 재설정합니다. 이는 LAG 분석 함수를 사용하여 달성 할 수 있습니까? – MrM
나는 당신이 의미하는 것을 얻을지 확신하지 못합니다. 귀하의 질문에 샘플 데이터와 예상 결과를 업데이트하여 귀하의 의미를 입증하십시오. 그것의 얼굴에, 당신은 단지 누적 합계를하기 위해'row_number()'대신에'sum()'이 필요할 것이라고 생각합니다. 그러나 예상되는 출력뿐만 아니라 데이터가 어떻게 보이는지 보지 않고도 그런 경우인지를 말하기는 어렵습니다. – Boneist
는 예상 된 결과를 제공하지 못했습니다. 초기 질문이 위에 업데이트되었습니다. – MrM