Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用SQL进行联接和求和_Sql_Join - Fatal编程技术网

如何使用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中使用的所有列进行分组,聚合函数中使用的除外。