用于组合重复项和总和的SQL查询

时间:2012-04-27 06:02:24

标签: sql

更新抱歉让您感到困惑。 “table”不是我的实际表名,我已使用正确的名称更新它,并且还有关于下面错误的更多信息。

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

orderid shipment_cost
1021    5.34
1021    7.83
1022    5.19
1023    5.59

如果在使用SQL查询重复订单时,如何添加所有shipment_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的支持是否可以提供任何线索。再次感谢!


Update3:当然Volusion支持是无益的,即使我告诉他们这个查询在另一台SQL服务器上工作,很明显他们的界面正在破坏它。看起来我必须将数据导入我的down数据库并在那里操作它。

2 个答案:

答案 0 :(得分:2)

我在northwind数据库中尝试过相同的查询,在那里我尝试使用customerid相等的运费进行补偿,

您可以在SQLFiddle

查看相同内容

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

您只需要在最内部选择中为别名提供别名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

答案 1 :(得分:2)

使用以下查询

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

table是一个SQL关键字