0

所以我试图在一家小公司的数据库中调查库存周转率。我基本上在做的是获取 Items 表并将其加入 POLineItemReceipts 表,然后我将 Items 表加入 SalesTransactionLineItems 表并试图找出我购买的每件商品的数量(在 POLineItemReceipts 中)以及我购买了多少已售出(在 SalesTransactionLineItems 中),然后将这两个数字相除以查看我的营业额。

我的查询适用于每个单独的表,即 SalesTransactionLineItems 和 POLineItemReceipts,但是当我尝试将两个表集成到一个查询中时,它会为我的 SUM(Quantity) 列提供随机的奇怪数字。POLineItemReceipts 和 SalesTransactionLineItems 表都有一个 SUM,因为它们都有一个数量列。

我怀疑我的加入正在抛弃一切,但我不太确定。

这是我的单独查询

SELECT DISTINCT i.Item_PK
    ,i.Code
    ,SUM(p.Quantity) as Y
FROM POLineItemReceipts p JOIN Items i ON i.Item_PK = p.Item_FK
GROUP BY  i.Item_PK, i.Code
ORDER BY i.Item_PK

在此处输入图像描述

SELECT DISTINCT i.Item_PK
    ,i.Code
    ,SUM(p.Quantity) as Y
FROM SalesTransactionLineItems p JOIN Items i ON i.Item_PK = p.Item_FK
GROUP BY  i.Item_PK, i.Code
ORDER BY i.Item_PK

在此处输入图像描述

然后结合

SELECT  DISTINCT i.Item_PK              
                    ,i.Code                 AS         Code
                    ,SUM(pr.Quantity)       AS TotalPurchased_X
                    ,SUM(tl.Quantity)       AS TotalSold_Y

    FROM
                    Items i JOIN POLineItemReceipts pr ON i.Item_PK = pr.Item_FK
                    JOIN SalesTransactionLineItems tl ON i.Item_PK = tl.Item_FK
    WHERE
                    i.ItemType_FK = 1
    GROUP BY
                    i.Item_PK
                    ,i.Code

    ORDER BY
                    i.Item_PK ASC

在此处输入图像描述

特别注意 Item_PK 2 和 3(Y 是 totalsold,X 是 totalpurchased。我在 SQL Server 中使用不同的标题运行查询)

不知道如何解决这个问题。任何帮助,将不胜感激...

4

1 回答 1

0

对于组合案例,您已使用额外的 i.Description 、i.Qty_Comp_OnHand 进行分组。如果你这样做,它会返回什么:

SELECT  DISTINCT i.Item_PK              AS ID
                ,i.Code                 AS         Code                    
                ,SUM(pr.Quantity)       AS         TotalPurchased
                ,SUM(tl.Quantity)       AS         TotalSold
                ,(SUM(tl.Quantity)/SUM(pr.Quantity)) AS Turnover
FROM
                Items i JOIN POLineItemReceipts pr ON i.Item_PK = pr.Item_FK
                JOIN SalesTransactionLineItems tl ON i.Item_PK = tl.Item_FK
WHERE
                i.ItemType_FK = 1
GROUP BY
                i.Item_PK
                ,i.Code

ORDER BY
                ID ASC
于 2013-11-01T02:03:27.963 回答