SQL сумма стоимости заказа от объединения двух таблиц - PullRequest
0 голосов
/ 09 мая 2020

Я хочу получить сумму продаж по каждому заказу вместе с данными о клиентах и ​​сотрудниках из другой таблицы

Таблица сведений о заказах

OrderID ProductID   UnitPrice   Quantity    Discount
10248   11              10         1              0
10248   42              20         2              0
10248   72              20         3              0
10249   14              10         1              0
10249   51              40         2              0

Таблица заказов

OrderID CustomerName    EmployeeName
10248   C1               E1
10249   C2               E2

Желаемый результат

orderid sales   Customer   Employee
10248   110        C1        E1
10249    90        C2        E2

Итак, мне нужна общая сумма продаж для каждого заказа (например, 10248 заказ имеет продажи 10 * 1 + 20 * 2 + 20 * 3 = 10 + 40 + 60 = 110) и соответствующее имя сотрудника и имя клиента

Попытка запроса

select od.orderid, Unitprice * Quantity as sales 
group by od.orderid
From [Order Details] od
inner join orders o on od.orderid = o.orderid 

Ошибка:

Неправильный синтаксис рядом с ключевым словом From.

Ответы [ 4 ]

1 голос
/ 09 мая 2020

FROM принадлежит перед GROUP BY.

select od.orderid, unitprice * quantity as sales 
from [Order Details] od
group by od.orderid;

С объединенной информацией о заказе:

select o.orderid, od.sales, o.customername, o.employeename
from orders o
join
(
  select orderid, unitprice * quantity as sales
  from [Order Details]
  group by orderid
) od on od.orderid = o.orderid
order by o.orderid;
1 голос
/ 09 мая 2020

Вам нужно агрегировать по заказу, а затем взять сумму продаж за заказ:

SELECT
    od.orderid,
    SUM(Unitprice * Quantity) AS sales 
FROM [Order Details] od
INNER JOIN orders o
    ON od.orderid = o.orderid
GROUP BY
    od.orderid;
1 голос
/ 09 мая 2020

Попробуйте следующее, у вас group by перед from. Также вам не нужно делать group by, если вы не используете агрегацию, вместо этого вы можете использовать distinct.

select 
  od.orderid, 
  sum(Unitprice * Quantity) as sales 
From [Order Details] od    
inner join orders o on od.orderid=o.orderid 
group by
   od.orderid
0 голосов
/ 09 мая 2020

Используйте SUM() вместе с GROUP BY. Я не могу тестировать, но подобный код должен работать в большинстве SQL версий.

SELECT 
   od.orderid, 
   SUM(od.Unitprice * od.Quantity) as sales,
   ot.CustomerName,
   ot.EmployeeName
FROM od
INNER JOIN ot ON od.orderid=ot.orderid;
GROUP BY od.orderid;

Вы сможете адаптировать скрипт к своей базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...