我有以下数据集(只是一个示例):
表 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.MAXthenTable1.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)。
但它可以在没有临时表的情况下完成吗?(遗憾的是,我无法在我的工作环境中创建函数和过程。)