0

因此,我查询了一份报告,该报告几乎完全符合我的需要。

代码为我提供了“套件”中的所有物品,告诉我套件中应该有多少物品,并告诉我套件中的物品与应该存在的数量之间的差异。

当套件中的相同产品代码有不同的批号时,即使我按产品代码进行分组,它也会将产品代码拆分为两个行项目。这看起来好像套件中缺少该产品代码的物品,但实际上它们并没有丢失,因为当您将单独的批次放在一起时,您会得到全部数量。

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 

结果见附件!谢谢你的帮助 :)结果

4

1 回答 1

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 
于 2012-11-27T16:07:19.223 回答