【问题标题】:How to join and sum using SQL如何使用 SQL 进行连接和求和
【发布时间】:2017-11-23 06:18:52
【问题描述】:

我有三张表要连接在一起。我的目标是查看每个订单的orderdateorderidcustomertotal amount of delivered items。订单中的每个唯一项目在订单详细信息表中都有一个单独的行,这意味着我需要对我的联接中的总金额求和,但我不知道如何?

    SELECT Orders.OrderDate
        , Orders.OrderID
        , Customers.CustomerName
        , OrderDetails.Quantity AS "Deliverd products"

    FROM Orders INNER JOIN Customers ON Customers.CustomerID = Orders.CustomerID
    INNER JOIN Orderdetails ON Orders.OrderID = OrderDetails.OrderID
    ORDER BY CustomerName;

【问题讨论】:

    标签: sql join


    【解决方案1】:

    你可以试试这个。

    SELECT Orders.OrderDate,
           Orders.OrderID,
           Customers.CustomerName,
           SUM(OrderDetails.Quantity) AS "Deliverd products"
    FROM Orders
    INNER JOIN Customers ON Customers.CustomerID = Orders.CustomerID
    INNER JOIN Orderdetails ON Orders.OrderID = OrderDetails.OrderID
    GROUP BY Orders.OrderDate,
           Orders.OrderID,
           Customers.CustomerName
    ORDER BY CustomerName;
    

    【讨论】:

    • 它成功了,你为什么要在 OrderDate 和 CustomerName 上分组?我只是按 OrderID 分组。
    • 您必须将所有在 select 中使用的列分组,但在聚合函数中使用的列除外。
    【解决方案2】:

    您可以在不需要明确分组的情况下尝试Sum Over option

    declare @orders table(orderid int identity (1,1), orderdate datetime, customerid int)
    declare @orderdetails table(orderdetailsid int identity (1,1), orderid int, quantity int)
    declare @customers table(customerid int identity (1,1), customername varchar(100))
    
    insert into @orders values('2017-11-21' , 1)
    insert into @orderdetails values (1,20) ,(1,5) , (1,7)
    insert into @customers values('ajay')
    
    
    SELECT distinct o.OrderDate,
           o.OrderID,
           c.CustomerName
    
           SUM(od.Quantity) OVER (ORDER BY od.OrderID) 
    FROM @orders o
    INNER JOIN @customers c ON c.CustomerID = o.CustomerID
    INNER JOIN @orderdetails od ON o.OrderID = od.OrderID
    
    ORDER BY CustomerName;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 2014-12-29
      • 2014-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多