我有一个名为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
答案 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
没有相应的顺序,这将是非常差的数据模型,这是您的查询版本所建议的。