【发布时间】:2013-11-12 05:16:49
【问题描述】:
因此,我试图在一家小公司的数据库中调查库存周转率。我基本上在做的是获取 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 中使用不同的标题运行查询)
不知道如何解决这个问题。任何帮助将不胜感激...
【问题讨论】:
-
当您“组合”查询时,您添加了额外的
GROUP BY字段。他们控制正在聚合的内容。 -
您可以设置SQL Fiddle 来显示您的问题吗?
-
@PM77-1 我不确定你的意思。我取出了 i.Item_PK 以外的额外字段,然后将其他字段也从组中删除,得到了相同的错误结果。
-
@PM77-1 我也会试试。不知道该怎么做
-
原始查询均未按
i.description和i.Qty_Comp_OnHand分组。您还有一个WHERE过滤器,该过滤器在任何一个原始查询中都不存在。我只是指出您所做的不仅仅是组合两个查询。
标签: sql sql-server select join sum