次のデータセットがあります(サンプルのみ):
表 1 :
ID MAX AMT SORTED
1 20 0 1
1 30 0 2
1 40 0 3
1 50 0 4
2 0 0 1
2 30 0 2
2 40 0 3
2 40 0 4
...
表 2 :
ID AMT
1 75
2 70
...
このルールを使用してTable1.AMT
更新する必要があります。Table2.AMT
Table1
そしてTable2
参加していますID
Table1.AMT
より大きい値を保持することはできませんMAX
- if
Table2.AMT >= Table1.MAX
then ... その後、上記のルールを引き続き使用しTable1.AMT = Table1.MAX
て次の行を更新Table1.AMT
します。Table2.AMT - previous record AMT
したがって、期待される出力は次のようになります
ID MAX AMT SORTED
1 20 20 1
1 30 30 2
1 40 25 3
1 50 0 4
2 0 0 1
2 30 30 2
2 40 40 3
2 40 0 4
...
どうすればそれを達成できますか?
の集計SUM()
で一時テーブルを作成しTable1.MAX
、それを参照して更新することを考えましたTable1.AMT
( if SUM(MAX) < Table2.AMT
then Table1.AMT = Table1.MAX
else Table1.AMT = previous records SUM(MAX)
)。
しかし、一時テーブルなしでそれを行うことはできますか? (残念ながら、私の作業環境では関数と手順を作成できません。)