我有这个问题。我想创建一个报表,保留表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
我不能确定,但也许你需要像上面那样的东西?