根据表a中的信息为表B创建一个新列



我有这个问题。我想创建一个报表,保留表B中的所有内容,但从表a (QtyRecv)中添加另一列。

条件:If RunningTotalQtyUsed (from table B) <QtyRecv,将该QtyRecv作为新列。>

例如,对于条目A1, (RunningTotalQtyUsed) 55 <100 (QtyRecv), ->ExpectedQtyRecv = 100.

但是如果RunningTotalQtyUsed超过QtyRecv,我们取下一个QtyRecv来覆盖使用的数量。

例如:101>100年,→ExpectedQtyRecv = 138.

149 (RunningTotalQtyUsed) <(100 + 138) (QtyRecv) ->138 .

250 & lt;(100 + 138 + 121) ->121 .

同样的逻辑也适用于A2项。

如果total QtyRecv = 6 + 4 + 10 = 20,但RunningTotalQtyUsed = 31 ->结果应该是99999,以通知QtyRecv不能覆盖QtyUsed的错误。

表答:

Item     QtyRecv
A1        100
A1        138
A1        121
A2        6
A2        4
A2        10

表B:

Item    RunningTotalQtyUsed
A1        55
A1        101
A1        149
A1        250
A2        1
A2        5
A2        9
A2        19
A2        31

预期结果:

Item    RunningTotalQtyUsed    ExpectedQtyRecv
A1            55                100
A1            101               138
A1            149               138
A1            250               121
A2            1                  6
A2            5                  6
A2            9                  4
A2            19                 10
A2            31                99999

我所做的努力:

SELECT b.*
FROM tableB b LEFT JOIN tableA a
ON b.item = a.item 
item    RunningTotalQtyUsed
A1              55
A1              55
A1              55
A1              101
A1              101
A1              101
A1              149
A1              149
A1              149
A1              250
A1              250
A1              250
A2              1
A2              1
A2              1
A2              5
A2              5
A2              5
A2              9
A2              9
A2              9
A2              19
A2              19
A2              19
A2              31
A2              31
A2              31

它不保持与表B相同的行数。如何仍然保持表B,但从表A添加ExpectQtyRecv ?非常感谢你的帮助!

SELECT B.TOTAL,B.SUM_RunningTotalQtyUsed,A.SUM_QtyRecv   FROM
(
SELECT B.ITEM,SUM(B.RunningTotalQtyUsed)AS SUM_RunningTotalQtyUsed
FROM TABLE_B AS B
GROUP BY B.ITEM
)B_TOTAL
LEFT JOIN
(
SELECT A.ITEM,SUM(A.QtyRecv)AS SUM_QtyRecv
FROM TABLE_A AS A
GROUP BY A.ITEM
)A_TOTAL ON B.ITEM=A.ITEM

我不能确定,但也许你需要像上面那样的东西?