Оставьте соединение и суммируйте каждую отдельную строку - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть таблица с именами orders (orderID, customerID, purchaseDate и paymentType) и orderLine (orderID, upc, productName, количество, цена).Я пытаюсь объединить эти две таблицы, чтобы они в первую очередь отображали таблицу заказов, но затем в крайнем правом углу у них был столбец общей цены.Это то, что у меня есть, но это сложение итогов для каждой строки в одну.Я хочу, чтобы каждая отдельная строка имела свою собственную сумму путем умножения количества * цены на основе идентификатора заказа.

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

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018
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
0 голосов
/ 05 декабря 2018

Вам нужны все заказов , поэтому начните с 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, у которых нет соответствующего порядка, что и предлагает ваша версия запроса.

0 голосов
/ 05 декабря 2018

Вам нужно добавить группу по предложению

SELECT orders.orderID, SUM(orderLine.price * orderLine.quantity) 
FROM orderLine 
LEFT JOIN orders 
ON orders.orderID = orderLine.orderID
grou by orders.orderID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...