我想要编写一个查询,该查询使用表中的一条记录,并从第二个表中的一条记录中减去一个值。请看下面的图片。
客户A订购了产品1的2个、产品2的1个、产品2的1个(稍后)、产品3的5个和产品4的1个。
他返回产品1的1个,产品2的1个,产品3的2个和产品3的1个。
不同之处将在下一列给出。

我的sql是:
SELECT Orders.Client, Orders.[Product #], [Ordered]-[Returned] AS Delta
FROM Orders INNER JOIN Returns ON (Orders.[Product #] = Returns.[Product
#]) AND (Orders.Client = Returns.Client);但它给了我以下错误,因为产品2作用于四次,产品3作用于两次as (5-2),然后再次作用为(5-1)。
Client Product # Delta
A 1 1
A 2 0
A 2 0
A 2 0
A 2 0
A 3 3
A 3 4发布于 2019-06-19 00:33:00
问题是您没有每个订单的id来匹配。尝试分别对每个表使用Sum和Group by,然后在已分组的列上连接它们
SELECT o.Client, o.[Product #], sum_ordered - sum_returned
FROM (SELECT Client, [Product #], SUM([Ordered]) AS sum_ordered
FROM Orders
GROUP BY Client, [Product #]) o
JOIN (SELECT Client, [Product #], SUM(returned) AS sum_returned
FROM Returns
GROUP BY Client, [Product #]) r ON o.Client = r.Client AND o.[Product #] = r.[Product #]https://stackoverflow.com/questions/56653378
复制相似问题