SQL计算 - 递归缩减

时间:2015-10-13 05:36:54

标签: mysql sql-server teradata

我正在寻找SQL中的解决方案[我需要在Teradata脚本中实现逻辑]。

我有2个表,如下所示:

表A

COLUMN1   COLUMN2  
CB2       10  
CB1       20  
CB3       30  

表B

COLUMN1   COLUMN2  
P1        10  
P2        15  
P3        15  
P4        10  
P5        10

需要的结果 - 表C

COLUMN1    COLUMN2   COLUMN3
CB2        P1        10
CB1        P2        15
CB1        P3         5
CB3        P3        10
CB3        P4        10
CB3        P5        10

表3背后的逻辑如下:

  1. 根据第2列中的值消耗表A和表B中的记录 这两个表中的记录构成了表C中的记录。
  2. 开始使用表A中的CB2记录和表B中的P1记录。 由于两个表中Column2中的值相同,因此此处没有戏剧性 - 结果表的column3值为10.
  3. 现在消耗表A中的记录2(CB1)和表中的P2记录 B.因为您只能从记录P2中消耗掉表B中的15个 这里得到的记录是CB1,P2,15。 CB1现在剩下5 [20-15]。
  4. 现在CB1的剩余5个与下一个记录相匹配 表B是P3。所以结果表中的第3条记录是 CB1,P3,5。
  5. 转到表A中的下一个新记录 - CB3。既然有 从另一个表格中删除前一个P3条目中的10个 结果记录是CB3,P3,10。 CB3的剩余20个匹配 P4和P5各10个。
  6. 基本上我们正在尝试使用两个表中的数字并显示结果表。在此过程中,如果当前记录中的数字是剩余的,则它们将被转移到下一条记录。

    希望我没有以令人困惑的方式解决它。

    解决方案需要采用SQL的形式,因为它需要进入SQL脚本,如前所述。关于如何实现结果的任何指导都非常感谢。我现在还不知道如何才能做到这一点?

0 个答案:

没有答案