SQLクエリで前の行から計算された値を参照するにはどうすればよいですか? 私の場合、各行は、前の行と同じ値を何らかの形で操作するイベントです。
生データは次のようになります。
イベント番号 イベントタイプ 合計料金 3 ACQ 32 2 OUT ヌル 1 OUT ヌル
各 Eventtype=OUT が、Remaincharge という列の前の行の totalcharge の半分であるとします。
Eventno Eventtype Totalcharge Remaincharge 3 ACQ 32 32 2 OUT NULL 16 1 OUT NULL 8
すでに LAG 分析関数を試しましたが、前の行から計算値を取得できません。次のようなことを試しました:
LAG(remaincharge, 1, totalcharge) OVER (PARTITION BY ...) as remaincharge
しかし、remaingcharge が見つからなかったため、これは機能しませんでした。
これを達成する方法はありますか?累積合計を取得できる分析関数が必要ですが、代わりに前の値にアクセスできる関数が必要です。
前もって感謝します!
問題の説明を更新する
私の例の問題は一般的なものだったと思いますが、ここに問題のより良い説明があります:
合計料金の残りは、outqty/(前の残りの数量) の比率によって決まります。
Eventno Eventtype Totalcharge Remainqty Outqty 4 ACQ 32 100 0 3 その他のヌル 100 0 2 OUT NULL 60 40 1 OUT NULL 0 60
Eventno Eventtype Totalcharge Remainqty Outqty Remaincharge 4 ACQ 32 100 0 32 3 OTHER NULL 100 0 32 - (0/100 * 32) = 32 2 OUT NULL 60 40 32 - (40/100 * 32) = 12.8 1 OUT NULL 0 60 12.8 - (60/60 * 12.8) = 0