左联接并求和每行

时间:2018-12-05 04:38:51

标签: sql join sum

我有一个名为orders(订单ID,customerID,purchaseDate和paymentType)和orderLine(orderID,upc,productName,数量,价格)的表。我正在尝试将这两个表联接起来,以便它主要显示订单表,但是在最右边具有每个订单的总价格列。这是我到目前为止所拥有的,但是它将每一行的总数加到一。我希望每一行都有自己的总和,方法是根据订单ID乘以数量*价格。

SELECT orders.orderID, SUM(orderLine.price * orderLine.quantity) 
FROM orderLine 
LEFT JOIN orders 
ON orders.orderID = orderLine.orderID

3 个答案:

答案 0 :(得分:1)

您需要添加group by子句

SELECT orders.orderID, SUM(orderLine.price * orderLine.quantity) 
FROM orderLine 
LEFT JOIN orders 
ON orders.orderID = orderLine.orderID
grou by orders.orderID

答案 1 :(得分:0)

SELECT orders.orderID, (SUM(orderLine.price * orderLine.quantity) Over (Order 
By orders.orderID))
FROM orderLine 
LEFT JOIN orders 
ON orders.orderID = orderLine.orderID
Group By orders.orderID

答案 2 :(得分:0)

您需要所有订单,所以从orders开始。表别名还使查询更易于编写和阅读:

SELECT o.orderID, SUM(ol.price * ol.quantity) 
FROM orders o LEFT JOIN
     orderLine ol
     ON o.orderID = ol.orderID
GROUP BY o.orderID;

然后您的问题的答案是GROUP BY

如果您的orderlines没有相应的顺序,这将是非常差的数据模型,这是您的查询版本所建议的。