结合重复和求和的SQL查询

结合重复和求和的SQL查询,sql,Sql,更新:很抱歉造成混淆。“table”不是我的实际tablename,我已经用正确的名称对它进行了更新,并在下面提供了有关错误的更多信息 我有一个名为TrackingNumbers的表,有两列。orderid列数据有时会重复,因为每个订单有多个装运(我没有设计数据库): 当orderid使用SQL查询重复时,如何添加所有装运成本值?因此,我希望查询结果如下所示: orderid shipment_cost 1021 13.17 1022 5.19 1023 5.59 我最好的猜

更新:很抱歉造成混淆。“table”不是我的实际tablename,我已经用正确的名称对它进行了更新,并在下面提供了有关错误的更多信息

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

当orderid使用SQL查询重复时,如何添加所有装运成本值?因此,我希望查询结果如下所示:

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
如果我添加一个订单

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 server上运行,而且很明显他们的界面正在破坏它。看起来我必须将数据导入我的down数据库并在那里进行操作。

我尝试了与northwind数据库相同的查询,我尝试在customerid相等的情况下汇总运费

您可以在

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

您只需在最内部的select中为sum指定别名作为
sum(装运成本)作为运费

  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

我在northwind数据库中尝试了相同的查询,我尝试在customerid相等的情况下汇总运费

您可以在

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

您只需在最内部的select中为sum指定别名作为
sum(装运成本)作为运费

  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
使用下面的查询

SELECT orderid, SUM(shipment_cost) FROM [table] GROUP BY orderid
是SQL关键字

使用下面的查询

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

table
是一个SQL关键字

如果这是您的精确查询,您需要转义
table
,因为它是一个SQL关键字。我认为您的查询没有问题,您的完整SQL错误是什么?这可能是由其他原因造成的。@Nick:如果我正确理解了OP,他们一定是被“愚蠢的专有应用程序”阻止了看到完整的错误消息。谢谢你的评论。我已经用一些附加信息更新了我的帖子。如果这是你的确切查询,你需要转义
,因为它是一个SQL关键字。我认为你的查询没有问题,你的完整SQL错误是什么?这可能是由其他原因造成的。@Nick:如果我正确理解了OP,他们一定是被“愚蠢的专有应用程序”阻止了看到完整的错误消息。谢谢你的评论。我已经用一些额外的信息更新了我的帖子。很抱歉让人困惑,表只是一些通用的东西,而不是我实际的表名。所以基本上你说的是我的问题是正确的。那一定是应用程序的问题。很抱歉搞混了,表只是一些通用的东西,而不是我实际的表名。所以基本上你说的是我的问题是正确的。那一定是应用程序的问题。很抱歉搞混了,表只是一些通用的东西,而不是我实际的表名。所以基本上你说的是我的问题是正确的。这一定与应用程序有关。我在尝试运行Volusion时遇到此错误:
SQL错误:ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP或FOR XML。
TOP显然是指定的,它在SQLFIDLE中工作,所以不确定发生了什么。谢谢,您是最接近的。下面是Volusion支持部门给出的确切答案(必须通过我们的客户代表才能得到回复jeez):
从TrackingNumbers GROUP BY orderid ORDER BY orderid ASC中选择orderid,SUM(Shipping_cost)作为Shipping_cost(装运成本)
很抱歉造成混淆,表只是一些通用的东西,而不是我实际的表名。所以基本上你说的是我的问题是正确的。这一定与应用程序有关。我在尝试运行Volusion时遇到此错误:
SQL错误:ORDER BY子句在视图、内联函数、派生表、子查询和公共表表达式中无效,除非还指定了TOP或FOR XML。
TOP显然是指定的,它在SQLFIDLE中工作,所以不确定发生了什么。谢谢,您是最接近的。下面是Volusion支持部门给出的确切答案(必须通过我们的客户代表才能得到答复):
从TrackingNumbers GROUP BY orderid ORDER BY orderid ASC中选择orderid,SUM(发货成本)作为发货成本