所以我得到了一份报告的查询,该报告几乎完全符合我的要求。
代码给了我“套件”中的所有项目,告诉我应该在套件中有多少项目,并告诉我套件中的项目和应该的数量之间的区别在那里。
当套件中的相同产品代码有不同的批号时,即使我按产品代码进行分组,它也会将产品代码拆分为两个订单项。这使得该产品代码的工具包中似乎缺少某些项目,但实际上它们并没有丢失,因为当您将单独的批次放在一起时,您将获得完整的数量。
SELECT plItem.ProductCode,
plItem.[Description],
sum(ISNULL(ProductContent.Qty, 0)) AS KitQty,
ISNULL(KitBomItems.Qty, 0) AS BOMQty,
sum(ISNULL(ProductContent.Qty, 0)) - ISNULL(KitBomItems.Qty, 0) AS Diff
FROM KitBomItems
JOIN ProductList AS plItem
ON KitBomItems.ProductListID = plItem.ID
AND KitBomItems.KitBomListID = @AssemblyID
LEFT JOIN ProductContent
ON ProductContent.ProductCode = plItem.ProductCode
AND ProductContent.StatusID = @KitID
GROUP BY plItem.ProductCode,
plItem.[Description],
ProductContent.Qty,
KitBomItems.Qty
查看结果的附件!感谢您的帮助:)
答案 0 :(得分:1)
我认为你的分组太多了 - 你不应该按ProductContent.Qty
进行分组。试试这个
SELECT
plItem.ProductCode,
plItem.[Description],
sum(ISNULL(ProductContent.Qty,0)) AS KitQty,
ISNULL(KitBomItems.Qty,0) as BOMQty,
sum(ISNULL(ProductContent.Qty,0)) - ISNULL(KitBomItems.Qty,0) AS Diff
FROM KitBomItems
JOIN ProductList AS plItem ON KitBomItems.ProductListID = plItem.ID
AND KitBomItems.KitBomListID = @AssemblyID
LEFT JOIN ProductContent ON ProductContent.ProductCode = plItem.ProductCode
AND ProductContent.StatusID = @KitID
group by
plItem.ProductCode,
plItem.[Description],
KitBomItems.Qty