我有2个表TblAddToInventory
和TblWithdrawnFromInventory
。两者都有ProductID
和Quantity
。提款时,库存自然应扣除物品数量,但只扣除已撤回的物品。例如:
TblAddToInventory
ProductID | Quantity | Amount | Date
1 2 2.00 7/7/2012
2 3 3.00 7/7/2012
3 4 4.00 7/7/2012
2 2 2.00 7/8/2012
3 3 3.00 7/8/2012
TblWithdrawnFromInventory
ProductID | Quantity | Amount | Date
2 4 4.00 7/9/2012
3 5 5.00 7/10/2012
有了这个,当我加入这两个表并扣除特定的列时,我应该使用C#和DataGridView
来获取这些数据:
ProductID | Quantity | Amount
1 2 2.00
2 1 1.00
3 2 2.00
我知道如何使用SUM
和JOIN
,但我不知道如何创建一个语法,该语法将从具有相同ID的不同表中减去两列。
我不知道这是否正确,但我想到的是SUM
来自TblAddToInventory
GROUP BY
使用SUM
然后TblWithdrawnFromInventory
来自{{1}使用GROUP BY
和SUBTRACT
TblAddToInventory
使用TblWithdrawnFromInventory
和GROUP BY
使用jbtOne
。但我认为这不是一个好主意。你能帮我吗?
谢谢。
答案 0 :(得分:0)
我知道如何使用SUM和JOIN,但我只是不知道如何创建一个 语法将从不同的表中减去两列 相同的ID。
这是代码如何执行此操作:
SELECT inventory.ProductId,
inventory.Quantity - ISNULL(withdrawal.Quantity,0) AS Quantity,
inventory.Amount - ISNULL(withdrawal.Amount,0) AS Amount
FROM (
SELECT ProductId, SUM(Quantity) AS Quantity, SUM(Amount) AS Amount
FROM TblAddToInventory
GROUP BY ProductId
) AS inventory
LEFT JOIN (
SELECT ProductId, SUM(Quantity) AS Quantity, SUM(Amount) AS Amount
FROM TblWithdrawnFromInventory
GROUP BY ProductId
) AS withdrawal ON inventory.ProductId = withdrawal.ProductId