私は顧客請求書データを保持するテーブルを持っています。私はキャリーオーバー・カウンターを作成することによって、顧客の請求書に特定の取引タイプが何ヶ月続くかを調べようとしています。トランザクションが存在しなくなると、カウンタはゼロにリセットされます。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値の
累積和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 |
+------------+-------------+-------------------+----------+-----------+
すばらしい答えをありがとう。 invoiceごとにtransaction_idがnot-null transaction_countに置き換えられていると仮定します。繰り越しは1で始まるのではなく、transaction_countで始まります。キャリーオーバーは、transaction_count前行+トランザクションカウント現在行として計算されます。トランザクション数の0は、キャリーオーバーを0にリセットする前と同じです。これは、LAG分析関数を使用して達成可能ですか? – MrM
私はあなたが何を意味するか分かりません。あなたが意味するものを実証するために、あなたの質問のサンプルデータと予想される結果を更新してください。その面では、 'row_number()'の代わりに 'sum()'が必要だと思います。しかし、データがどのように見えるのか、期待される出力を見ることなく、そうであるかどうかは分かりません。 – Boneist
は期待された結果を得ていませんでした。上記の最初の質問が更新されました。 – MrM