我有 2 个表,如下所示。
表 1
订单编号 | Item_code | Sales_Price | 订购数量 | 总计 | 发货数量 |
---|---|---|---|---|---|
1000 | 111 | 10 | 5 | $50 | 1 |
1000 | 222 | 20 | 10 | $200 | 2 |
1000 | 333 | 30 | 15 | 450 美元 | 0 |
我有另一个表,只存储发票金额的详细信息(即我们运送了多少)
Table2(因为我们只发货了 10x1 和 20x2 = 50 美元)
订单编号 | Invoice_total |
---|---|
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
这个查询给了我以下输出,(它向 T1 订单的所有行添加 50 美元)。
订单编号 | 订购数量 | 总计 | 发货数量 | Invoice_total |
---|---|---|---|---|
1000 | 30 | 700 美元 | 3 | $150 |
而现在,我希望我的输出如下:
订单编号 | 订购数量 | 总计 | 发货数量 | Invoice_total |
---|---|---|---|---|
1000 | 30 | 700 美元 | 3 | $50 |
(因为我们只发货了 50 美元)
我应该对查询进行哪些更改? 我知道我可以对其进行硬编码,但我的数据库有 1000 个订单和 1000 个半发货订单。我想跟踪所有订单的已发货 $(已开票 $)。
答案 0 :(得分:0)
如果我理解正确,你想要:
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
键。