【问题标题】:Joining tables and aggregation/sub queries连接表和聚合/子查询
【发布时间】:2021-07-03 18:05:27
【问题描述】:

我有 2 个表格,如下所示。

表1

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

我有另一个表,其中仅存储发票金额的详细信息(即我们运送了多少)

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

Order ID 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

这个查询给了我以下输出,(它将 50 美元添加到 T1 订单的所有行)。

Order ID Qty_ordered Total Qty shipped Invoice_total
1000 30 $700 3 $150

而现在,我希望我的输出如下:

Order ID Qty_ordered Total Qty shipped Invoice_total
1000 30 $700 3 $50

(因为我们只运送了 50 美元)

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

【问题讨论】:

    标签: sql sql-server tsql join aggregation


    【解决方案1】:

    如果我理解正确,你想要:

    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 键。

    【讨论】:

      猜你喜欢
      • 2021-07-16
      • 2023-02-03
      • 2013-08-04
      • 1970-01-01
      • 1970-01-01
      • 2011-12-15
      • 2014-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多