繁体   English   中英

SQL内部联接在2个表之间多次求和字段的数量

[英]Sql Inner Join among 2 tables summing the qty field multiple times

我有两个表A和B

表A包含:

OrderNo |  StyleNo     |  Qty  
O-20    | S-15         |  20  
O-20    | S-18         |  40
O-25    | S-19         |  50

表B包含:

OrderNo |  StyleNo     | Ship Qty  
O-20    | S-15         |   5  
O-20    | S-18         |  30  
O-20    | S-15         |  12  
O-20    | S-18         |  6

结果要求

OrderNo |  StyleNo     | Qty     | Ship Qty      
O-20    | S-15         |   20    |  17  
O-20    | S-18         |   40    |  36  
O-25    | S-19         |   50    |  0

以下查询不起作用

select   
    B.Orderno, B.StyleNo, sum(A.Qty), sum(B.QtyShip) 
from     
    A 
inner join 
    B on A.OrderNo = B.OrderNo and A.StyleNo = B.StyleNo 
group by 
    B.OrderNo, B.StyleNo

您遇到的问题是它多次对qty字段求和。 将总和移到子查询并在这些子查询上使用联接:

select a.orderno, a.styleno, a.qty, b.qtyship
from (
  select orderno, styleno, sum(qty) qty
  from a
  group by orderno, styleno
  ) a
    join (
  select orderno, styleno, sum(qtyship) qtyship
  from b
  group by orderno, styleno
  ) b on a.orderno = b.orderno and a.styleno = b.styleno

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM