SQL选择带和的多个

SQL选择带和的多个,sql,select,sum,Sql,Select,Sum,我试图做一个选择和同时做其他选择。我当前的脚本: SELECT Orders.OrderID,SUM(Trackingnumbers.Shipment_Cost) AS Shipping_Cost FROM Orders INNER JOIN Trackingnumbers ON Orders.OrderID = TrackingNumbers.OrderID WHERE Orders.OrderStatus = 'Shipped' AND Orders.ShipDate > (GETD

我试图做一个选择和同时做其他选择。我当前的脚本:

SELECT Orders.OrderID,SUM(Trackingnumbers.Shipment_Cost) AS Shipping_Cost
FROM Orders 
INNER JOIN Trackingnumbers
ON Orders.OrderID = TrackingNumbers.OrderID
WHERE Orders.OrderStatus = 'Shipped' AND Orders.ShipDate > (GETDATE()-6) AND Orders.PaymentAmount = Orders.Total_Payment_Received
Group By Orders.OrderID

我想选择更多的列,但我不能,因为我使用的是SUM函数,所以它不起作用。我如何将SUM函数与其他属性分开,以便CSV文件将所有列加上Trackingnumber.shipping\u Cost之和放在一列中

这里的想法是使用GROUP BY的聚合查询。这意味着您返回的列通常应该是聚合函数的结果,或者是与之分组的内容


根据您使用的平台的不同,有些具有第一个功能,这可能很有用。

您可以使用子查询

挑选* , 选择SUMU成本 从追踪数字 其中Trackingnumbers.OrderID=Orders.OrderID 作为运费 从命令 其中Orders.OrderStatus='Shipped' 和Orders.ShipDate>GETDATE-6 和Orders.PaymentAmount=Orders.Total\已收到的付款
您可以根据查询结果进行另一次查询,如下所示:

select b.aaa,b.bbb from (
    SELECT Orders.OrderID,SUM(Trackingnumbers.Shipment_Cost) AS Shipping_Cost
FROM Orders 
INNER JOIN Trackingnumbers
ON Orders.OrderID = TrackingNumbers.OrderID
WHERE Orders.OrderStatus = 'Shipped' AND Orders.ShipDate > (GETDATE()-6) AND Orders.PaymentAmount = Orders.Total_Payment_Received
Group By Orders.OrderID) as a,Orders b where a.OrderID = b.OrderID.

有两种不同的方法可以得到它

I.对结果中要包含的每一列应用聚合函数

选择Orders.OrderID、MAXOrders.ShipDate作为ShipDate、MAXOrders.OrderStatus作为OrderStatus、SUMTrackingnumbers.Shipping\u Cost作为Shipping\u Cost 从命令 内部连接跟踪编号 ON Orders.OrderID=TrackingNumbers.OrderID 其中Orders.OrderStatus='Shipped'和Orders.ShipDate>GETDATE-6和Orders.PaymentAmount=Orders.Total\u Payment\u Received 按订单分组。订单ID 二,。将所有字段放入GROUPBY子句中

选择Orders.OrderID、Orders.ShipDate、Orders.OrderStatus、SumTrackingNumber.Shipping\u Cost作为装运成本 从命令 内部连接跟踪编号 ON Orders.OrderID=TrackingNumbers.OrderID 其中Orders.OrderStatus='Shipped'和Orders.ShipDate>GETDATE-6和Orders.PaymentAmount=Orders.Total\u Payment\u Received 三、 使用子查询

选择*,选择SumTrackingNumber.Shipping\u成本 从追踪数字 其中TrackingNumbers.OrderID=Orders.OrderID作为装运成本 其中Orders.OrderStatus='Shipped'和Orders.ShipDate>GETDATE-6和Orders.PaymentAmount=Orders.Total\从订单收到的付款
我将把另一个项目放在哪里选择?@user1090389我假设您只需要Orders表中的列,它应该由*或您自己从该表中选择的列来覆盖。我尝试将我自己的列放在其中,但它不起作用。它对*起作用,但当我用Orders.salerepcustomerid,Orders.COGS替换*时,它不起作用。@user1090389尝试只选择salerepcustomerid和COGS这两列,然后从from子句开始选择所有内容。如果可行,那么尝试在它之后引入子查询,它应该会起作用。我不确定你说的是什么,这与我试图完成的工作类似:选择Orders.Total_Payment_Received,Orders.SalesTax1,Orders.COGS,从Trackingnumbers中选择SumShipping_Cost,其中Trackingnumbers.OrderID=Orders.OrderID作为Orders.OrderStatus='Shipped'和Orders.ShipDate>GETDATE-6和Orders.PaymentAmount=Orders.Total_Payment_Received我不希望其他列成为总和的一部分,我只想把它们出口。正如您编写的那样,没有starCan似乎无法正确设置SQL格式,尝试在其中使用lang SQL,但没有成功。