如何解决MS-Access:从3个表计算库存
我正在从StackOverFlow
中读取this post,以调整查询以从3个表中计算库存。我有3个表tblItems
,tblPurchase
和tblSales
。 tblItems
包含以下项目信息。
ItemCode Description ItemClass ItemCategory ReorderLevel Unit Stop
IT000001 Tonner 226A Tonner IT Accessories 10 Pc(s) No
IT000002 Keyborad (A4Tech,Slim Key) Keyboard IT Accessories 10 Pc(s) No
IT000003 Mouse (Wireless) Mouse IT Accessories 10 Pc(s) No
SI000001 A4 Size Paper Paper Office Stationary 10 Pc(s) No
SI000002 Pen (Black) Pen Office Stationary 10 Pc(s) No
SI000003 Pen (Blue) Pen Office Stationary 10 Pc(s) No
我的桌子的屏幕截图
tblItems:
tbl购买:
tbl销售:
我的预期结果如下
在查询结果项中,详细信息将来自tblItems
。每件商品的总购买数量和每件商品的总销售数量,然后从SalesQuantity
减去PurchaseQuantity
来查看库存。
这是我的查询,给我以下警告。
SELECT DISTINCTROW tblItems.ItemCode,TblItems.Description,TblItems.ItemClass,TblItems.ItemCategory,TblPurchaseAgg.[pQuantity],TblSalesAggs.[sQuantity]
FROM (TblItems
LEFT JOIN (SELECT TblItems.ItemCode AS ItemCode,Sum(TblPurchase.Quantity) AS pQuantity FROM TblItems LEFT JOIN TblPurchase ON TblItems.ItemCode = TblPurchase.ItemCode GROUP BY TblItems.ItemCode)
AS TblPurchaseAgg ON TblItems.ItemCode = TblPurchaseAgg.ItemCode)
LEFT JOIN
(SELECT TblItems.ItemCode AS ItemCode,Sum(tblSales.Quantity) AS sQuantity FROM TblItems LEFT JOIN tblSales ON TblItems.ItemCode = tblSales.ItemCode GROUP BY TblItems.ItemCode) AS TblSalesAggs ON TblItems.ItemCode = TblSalesAggs.ItemCode
GROUP BY TblItems.ItemCode,TblItems.ItemCategory;
寻求帮助以解决警告并获得预期的输出。任何帮助是极大的赞赏。预先感谢。
解决方法
请使用这个-
SELECT
tblItems.ItemCode,TblItems.Description,TblItems.ItemClass,TblItems.ItemCategory,TblPurchaseAgg.[pQuantity],TblSalesAggs.[sQuantity]
FROM TblItems
LEFT JOIN (SELECT TblPurchase.ItemCode AS ItemCode,Sum(TblPurchase.Quantity) AS pQuantity FROM TblPurchase GROUP BY TblPurchase.ItemCode) TblPurchaseAgg ON TblItems.ItemCode = TblPurchaseAgg.ItemCode
LEFT JOIN (SELECT tblSales.ItemCode AS ItemCode,Sum(tblSales.Quantity) AS sQuantity FROM tblSales GROUP BY tblSales.ItemCode) TblSalesAggs ON TblItems.ItemCode = TblSalesAggs.ItemCode
GROUP BY TblItems.ItemCode,TblItems.ItemCategory;
,
您不需要外部/第一组。由于您的项目表将[probably]
永远不会有重复的项目,因此返回的记录将始终是唯一的。
您正在使用的两个左联接均按itemCode
分组,因此它们每个项也将仅返回一条记录。因此不需要整体分组。
这可能对您有用:
SELECT
tblItems.ItemCode,TblPurchaseAgg.pQuantity,TblSalesAggs.sQuantity,(TblPurchaseAgg.pQuantity - TblSalesAggs.sQuantity) as stock,TblItems.unit
FROM
(TblItems
LEFT JOIN
(
SELECT
TblPurchase.ItemCode AS ItemCode,Sum(TblPurchase.Quantity) AS pQuantity
FROM
TblPurchase
GROUP BY TblPurchase.ItemCode
) AS TblPurchaseAgg
ON TblItems.ItemCode = TblPurchaseAgg.ItemCode)
LEFT JOIN
(
SELECT
tblSales.ItemCode AS ItemCode,Sum(tblSales.Quantity) AS sQuantity
FROM
tblSales
GROUP BY tblSales.ItemCode
) AS TblSalesAggs
ON TblItems.ItemCode = TblSalesAggs.ItemCode
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。