2013-11-01 26 views
0

因此,我正在研究小公司的数据库中的库存周转。我基本上正在做的是拿着Items表并将其加入到POLineItemReceipts表中,然后我将Items表加入到SalesTransactionLineItems表中,并试图找出每件物品有多少(在POLineItemReceipts中)以及我有多少I已经售出(在SalesTransactionLineItems中),然后将这两个数字分开来查看我的营业额。当我加入另一个表时,SQL查询值发生变化

我的查询适用于每个单独的表SalesTransactionLineItems和POLineItemReceipts,但是当我尝试将两个表集成到一个查询中时,它会为我的SUM(数量)列提供随机奇怪的数字。 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 

enter image description here

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 

enter image description here

,然后结合

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 

enter image description here

要特别注意Item_PK 2和3(Y是totalsold而X totalpurchased。我用SQL服务器中的不同标题运行查询)

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

+0

当你“组合”你查询你添加额外的'GROUP BY'字段。他们控制着什么被汇总。 –

+0

您可以设置[SQL小提琴](http://www.sqlfiddle.com)以显示您的问题? –

+0

@ PM77-1我不确定你的意思。我拿出除i.Item_PK以外的额外字段,然后从组中删除其他字段,并得到相同的错误结果。 – Carson

回答

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 
+0

问题依然存在。现在发布数据进行分析 – Carson

相关问题