如何使用SQL进行联接和求和
我有三张桌子要拼在一起。我的目标是查看每个订单的如何使用SQL进行联接和求和,sql,join,Sql,Join,我有三张桌子要拼在一起。我的目标是查看每个订单的订单日期,订单ID,客户以及交付项目的总额。订单中的每个唯一项目在订单详细信息表中都有一行,这意味着我需要对联接中的总金额求和,但我不知道如何求和 SELECT Orders.OrderDate , Orders.OrderID , Customers.CustomerName , OrderDetails.Quantity AS "Deliverd products" FROM O
订单日期
,订单ID
,客户
以及交付项目的总额。订单中的每个唯一项目在订单详细信息表中都有一行,这意味着我需要对联接中的总金额求和,但我不知道如何求和
SELECT Orders.OrderDate
, Orders.OrderID
, Customers.CustomerName
, OrderDetails.Quantity AS "Deliverd products"
FROM Orders INNER JOIN Customers ON Customers.CustomerID = Orders.CustomerID
INNER JOIN Orderdetails ON Orders.OrderID = OrderDetails.OrderID
ORDER BY CustomerName;
你可以试试这个
SELECT Orders.OrderDate,
Orders.OrderID,
Customers.CustomerName,
SUM(OrderDetails.Quantity) AS "Deliverd products"
FROM Orders
INNER JOIN Customers ON Customers.CustomerID = Orders.CustomerID
INNER JOIN Orderdetails ON Orders.OrderID = OrderDetails.OrderID
GROUP BY Orders.OrderDate,
Orders.OrderID,
Customers.CustomerName
ORDER BY CustomerName;
您可以在不需要显式分组的位置进行尝试
declare @orders table(orderid int identity (1,1), orderdate datetime, customerid int)
declare @orderdetails table(orderdetailsid int identity (1,1), orderid int, quantity int)
declare @customers table(customerid int identity (1,1), customername varchar(100))
insert into @orders values('2017-11-21' , 1)
insert into @orderdetails values (1,20) ,(1,5) , (1,7)
insert into @customers values('ajay')
SELECT distinct o.OrderDate,
o.OrderID,
c.CustomerName
SUM(od.Quantity) OVER (ORDER BY od.OrderID)
FROM @orders o
INNER JOIN @customers c ON c.CustomerID = o.CustomerID
INNER JOIN @orderdetails od ON o.OrderID = od.OrderID
ORDER BY CustomerName;
它起作用了,你为什么要按OrderDate和CustomerName分组呢?我只是根据OrderID进行分组。您必须对select中使用的所有列进行分组,聚合函数中使用的除外。