关于sql server:连接两个表的订单值的SQL总和

SQL sum of order value from joining two tables

我想从另一个表中获取每个订单的销售额总和,以及客户和员工的详细信息

订单明细表

1
2
3
4
5
6
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

订单表

1
2
3
OrderID CustomerName    EmployeeName
10248   C1               E1
10249   C2               E2

想要的结果

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

所以我需要每个订单的总销售额(例如 10248 个订单的销售额为 10*1 20*2 20*3 = 10 40 60=110)以及相应的员工姓名和客户姓名

查询已尝试

1
2
3
4
SELECT od.orderid, Unitprice * Quantity AS sales
GROUP BY od.orderid
FROM [ORDER Details] od
INNER JOIN orders o ON od.orderid = o.orderid

错误:

Incorrect syntax near the keyword 'From'.


需要按订单聚合,然后取每个订单的销售额之和:

1
2
3
4
5
6
7
8
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;

from 属于 group by.

之前

1
2
3
SELECT od.orderid, unitprice * quantity AS sales
FROM [ORDER Details] od
GROUP BY od.orderid;

加入订单信息:

1
2
3
4
5
6
7
8
9
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;


尝试以下操作,您在 from 之前有一个 group by。此外,如果您不使用聚合,则不需要执行 group by 而是可以使用 distinct.

1
2
3
4
5
6
7
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


SUM()group by 结合使用。我无法测试,但像这样的代码应该适用于大多数 SQL 版本。

1
2
3
4
5
6
7
8
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;

您应该能够使脚本适应您的数据库。