我一直坚持这个问题一段时间,不知道如何前进。问题是当连接多个表时:我注意到数字数据与我期望的数字数据不匹配。这是因为对于表中记录较少的每条记录,连接将从较大的表中获取所有相应的记录。
例如,假设您有以下表格。记录较少的表可用水果,每个A,B,C,D和E都有一条记录。具有更多记录的表,即今日销售,有多个记录,分别为A,B,C,D和E.
然后假设您使用JOIN来组合上面的两个表。
SELECT A.*, B.*
FROM [Available Fruits] A
JOIN [Sales Today] B
ON A.[Fruit ID]=B.[Fruit ID]
结果如下表所示。请注意,“可用水果”表中的行对于“销售当天”表中显示相应ID的每个实例都是重复的。即,如果将库存和水果字段放入新表中,则此连接表会使苹果库存显示为375而不是预期的75,如下图所示。
不幸的是,我仍然没有足够的分数来发布图片。
编辑:那么我想在SQL中做的就是以某种方式能够将“今日销售”表格汇总到“可用水果”粒度级别,这样它就不会重复或以某种方式计算分布按照A,B,C,D,E销售的库存,所以我可以加入两个表,而不是我在库存字段中解释的重复。我非常感谢你所有的帮助。
答案 0 :(得分:0)
您实际上并未发布想要的内容。试试这样的事情(我现在无法尝试,我以前从未在连接的表上做过分组)
SELECT A.[Fruit ID], A.Fruit, sum(B.[Fruits Sold])
from [Available Fruits] A
left outer join [Sales Today] B on A.[Fruit ID] = B.[Fruit ID]
group by A.[Fruit ID], A.[Fruit]