更新:抱歉让您感到困惑。 “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 BYSELECT 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数据库并在那里操作它。
答案 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关键字