0

更新很抱歉造成混乱。“表”不是我的实际表名,我已经用正确的名称更新了它,还提供了有关以下错误的更多信息。

我有一个名为 TrackingNumbers 的表,有两列。orderid 列数据有时会重复,因为每个订单有多个发货(我没有设计数据库):

orderid shipment_cost
1021    5.34
1021    7.83
1022    5.19
1023    5.59

当 orderid 使用 SQL 查询重复时,如何添加所有 shipping_cost 值?所以我希望查询结果看起来像:

orderid shipment_cost
1021    13.17
1022    5.19
1023    5.59

我最好的猜测是它是这样的:

SELECT orderid, SUM(shipment_cost) FROM TrackingNumbers GROUP BY orderid

但这给了我一个未指定的 SQL 错误。不确定这是我的查询还是愚蠢的专有应用程序。感谢您的任何建议!


更新2:所以根据答案,我的查询似乎没问题,我也只是在我自己的MySQL服务器上仔细检查过,回来没问题。这一定是应用程序的错(Volusion)。他们有一个用于运行自定义报告的糟糕的小界面,它似乎用额外的东西包装了我的 SQL 查询。Volusion的错误:

SQL Error: SELECT * ,17041 as RecordCount 
           FROM (SELECT TOP 10 * 
                 FROM (SELECT TOP 10 orderid, SUM(shipment_cost) 
                       FROM TrackingNumbers 
                       GROUP BY orderid ORDER BY ) 
                 SUBSEL ORDER BY ) 
           PAGESEL ORDER BY

如果我添加一个 ORDER BY 之类的

SELECT orderid, SUM(shipment_cost) 
FROM TrackingNumbers 
GROUP BY orderid 
ORDER BY orderid ASC 

因为这似乎是它想要的:

SQL Error: SELECT * ,17041 as RecordCount 
           FROM (SELECT TOP 10 * 
                 FROM (SELECT TOP 10 orderid, SUM(shipment_cost) 
                       FROM TrackingNumbers 
                       GROUP BY orderid 
                       ORDER BY orderid ASC) 
                 SUBSEL ORDER BY orderid DESC ) 
           PAGESEL ORDER BY orderid ASC

我想我将不得不看看 Volusion 的支持是否能提供任何线索。再次感谢!


更新 3 :当然 Volusion 支持是没有帮助的,即使我告诉他们这个查询可以在另一个 SQL 服务器上工作,而且很明显他们的界面正在破坏它。看起来我将不得不将数据导入我的数据库并在那里进行操作。

4

2 回答 2

3

使用以下查询

SELECT orderid, SUM(shipment_cost) FROM [table] GROUP BY orderid

table是一个 SQL 关键字

于 2012-04-27T06:18:00.867 回答
2

我已经尝试使用 Northwind 数据库进行相同的查询,我尝试在 customerid 相等的情况下对运费进行求和,

您可以在SQLFiddle检查相同

我还更正了您的查询,现在它应该可以工作了:

您只需要在最内部的选择中为 sum 提供别名SUM(shipment_cost) as Freight

  SELECT * ,17041 as RecordCount 
  FROM(SELECT TOP 10 * 
       FROM(SELECT TOP 10 orderid, SUM(shipment_cost) as Freight
            FROM TrackingNumbers 
            GROUP BY orderid 
            ORDER BY orderid ASC) 
       SUBSEL ORDER BY orderid DESC)
  PAGESEL ORDER BY orderid ASC
于 2012-04-27T06:14:00.447 回答