联接表和 aggregation/sub 查询

Joining tables and aggregation/sub queries

我有 2 个 table 如下所示。

表 1

Order ID Item_code Sales_Price Qty_ordered Total Qty shipped
1000 111 10 5 1
1000 222 20 10 0 2
1000 333 30 15 0 0

我有另一个 table 只存储发票金额的详细信息(即我们运送了多少)

表 2(因为我们只运送 10x1 和 20x2 = 50 美元)

Order ID Invoice_total
1000

我写了下面的查询,

select T1.Order_ID, 
       sum(T1.Qty_Ordered) as Qty_Ordered, 
       sum(T1.Total) as Total_Amt_ordered, 
       sum(T1.Qty_shipped) as Qty_Shipped, 
       sum(T2.Invoice_total) 
  from T1 join 
       T2 on T1.Order_ID = T2.Order_ID

此查询为我提供了以下输出(它向 T1 订单的所有行添加了 50 美元)。

Order ID Qty_ordered Total Qty shipped Invoice_total
1000 30 0 3 0

而现在,我希望输出为:

Order ID Qty_ordered Total Qty shipped Invoice_total
1000 30 0 3

(因为我们只发货了 50 美元)

我应该对查询进行哪些更改? 我知道我可以硬编码,但我的数据库有 1000 个订单和 1000 个半发货订单。我想跟踪所有订单的已装运 $(发票 $)。

如果我没理解错的话,你想要:

select T2.Order_ID, T2.Invoice_total, 
       sum(T1.Qty_Ordered) as Qty_Ordered, 
       sum(T1.Total) as Total_Amt_ordered, 
       sum(T1.Qty_shipped) as Qty_Shipped, 
from T2 join 
     T1
     on T1.Order_ID = T2.Order_ID
group by T2.Order_ID, T2.Invoice_total;

也就是不想聚合Invoice_total。你只希望它是一个 group by 键。