我有以下数据集(只是一个示例):
表 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
thenTable1.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
(如果则为SUM(MAX) < Table2.AMT
其他Table1.AMT = Table1.MAX
)Table1.AMT = previous records SUM(MAX)
。
但它可以在没有临时表的情况下完成吗?(遗憾的是,我无法在我的工作环境中创建函数和过程。)