0

そのため、必要なものをほぼ正確に提供するレポートのクエリを取得しました。

このコードは、「キット」内のすべてのアイテムを提供し、キット内にあるはずのアイテムの数を教えてくれ、キット内のアイテムとそこにあるはずの数の違いを教えてくれます。

キット内の同じ製品コードに異なるロット番号がある場合、製品コードごとにグループ化しているにもかかわらず、製品コードが 2 つの項目に分割されます。これにより、その製品コードのキットに欠品があるように見えますが、実際には欠品ではなく、別々のロットをまとめるとすべての数量が得られます。

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 に答える