首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使查询只作用于一个元素

如何使查询只作用于一个元素
EN

Stack Overflow用户
提问于 2019-06-19 00:23:46
回答 1查看 114关注 0票数 0

我想要编写一个查询,该查询使用表中的一条记录,并从第二个表中的一条记录中减去一个值。请看下面的图片。

客户A订购了产品1的2个、产品2的1个、产品2的1个(稍后)、产品3的5个和产品4的1个。

他返回产品1的1个,产品2的1个,产品3的2个和产品3的1个。

不同之处将在下一列给出。

我的sql是:

代码语言:javascript
复制
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)。

代码语言:javascript
复制
Client  Product #   Delta
 A           1        1
 A           2        0
 A           2        0
 A           2        0
 A           2        0
 A           3        3
 A           3        4
EN

回答 1

Stack Overflow用户

发布于 2019-06-19 00:33:00

问题是您没有每个订单的id来匹配。尝试分别对每个表使用Sum和Group by,然后在已分组的列上连接它们

代码语言:javascript
复制
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 #]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56653378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档