[英]Joining tables and aggregation/sub queries
我有 2 个表格,如下所示。
表格1
订单编号 | 项目代码 | 销售价格 | 订购数量 | 全部的 | 发货数量 |
---|---|---|---|---|---|
1000 | 111 | 10 | 5 | 50 美元 | 1 |
1000 | 222 | 20 | 10 | 200 美元 | 2 |
1000 | 333 | 30 | 15 | 450 美元 | 0 |
我有另一个表只存储发票金额的详细信息(即我们运送了多少)
表 2(因为我们只运送 10x1 和 20x2 = 50 美元)
订单编号 | 发票总额 |
---|---|
1000 | 50 美元 |
我写了以下查询,
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
该查询为我提供了以下 output,(它为 T1 订单的所有行增加了 50 美元)。
订单编号 | 订购数量 | 全部的 | 发货数量 | 发票总额 |
---|---|---|---|---|
1000 | 30 | 700 美元 | 3 | 150 美元 |
而现在,我希望我的 output 为:
订单编号 | 订购数量 | 全部的 | 发货数量 | 发票总额 |
---|---|---|---|---|
1000 | 30 | 700 美元 | 3 | 50 美元 |
(因为我们只发货了 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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.