无法按照我的意愿将重复项目添加到组中

时间:2012-11-27 16:00:17

标签: sql-server tsql sql-server-2005

所以我得到了一份报告的查询,该报告几乎完全符合我的要求。

代码给了我“套件”中的所有项目,告诉我应该在套件中有多少项目,并告诉我套件中的项目和应该的数量之间的区别在那里。

当套件中的相同产品代码有不同的批号时,即使我按产品代码进行分组,它也会将产品代码拆分为两个订单项。这使得该产品代码的工具包中似乎缺少某些项目,但实际上它们并没有丢失,因为当您将单独的批次放在一起时,您将获得完整的数量。

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 

查看结果的附件!感谢您的帮助:)result

1 个答案:

答案 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