次のデータセットがあります(サンプルのみ):
表 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参加していますIDTable1.AMTより大きい値を保持することはできませんMAX- if
Table2.AMT >= Table1.MAXthen ... その後、上記のルールを引き続き使用し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.AMTthen Table1.AMT = Table1.MAXelse Table1.AMT = previous records SUM(MAX))。
しかし、一時テーブルなしでそれを行うことはできますか? (残念ながら、私の作業環境では関数と手順を作成できません。)