求和表达式聚合错误

Sum Expression Aggregate Error

我正在重写这个问题,因为 Gordon Linoff 告诉我,如果我编辑我的另一个问题,它可能会显得粗鲁——所以这不是重复,只是更正。

我正在尝试编写一个代码,用于对我填写查询时出现的所有订单的价格求和。例如,如果我输入 ID 范围 1-60,我希望创建一个汇总列,然后汇总 ID 1-60 的所有价格。

我以为只要创建一个 SUM(.....) AS Exp 1 就足够简单了,但它告诉我 ID 和聚合函数有问题。

我希望能够看到单独的价格,以及包含所有这些价格总和的新列。我计划稍后在 table 中添加更多的数据列。

我当前的代码如下所示:

SELECT table.ID, table.Price, SUM(table.Price) AS Exp 1 
FROM table
WHERE table.ID BETWEEN StartID AND EndID

感谢您的帮助

您的聚合语句存在概念错误。当您 运行 此查询时,WHERE 子句将首先评估以排除所有不在用户指定的起点和终点之间的 ID。然后,您错过了 GROUP BY 子句来告诉它需要分组的内容。删除 table.Price 字段,否则您将获得每个价格的唯一记录,这不是您想要的。

SELECT t.ID, SUM(t.Price) AS Price_Summary
FROM table t
WHERE t.ID BETWEEN StartID AND EndID
GROUP BY t.ID

此外,别名将有助于提高可读性。

编辑

我认为这可能是您想要达到的目的,但我仍然不清楚。

SELECT t.ID, SUM(t.Price) AS Price_Summary, 
    (SELECT SUM(t2.Price) FROM table t2 WHERE t2.ID BETWEEN StartID AND EndID) AS Total_Price
FROM table t
WHERE t.ID BETWEEN StartID AND EndID
GROUP BY t.ID

这将为您提供包含所有 ID 的结果集、具有该 ID 的所有物品的价格总和,以及总和。所以它看起来像这样:

ID | Price_Summary | Total_Price
1    10              60
2    30              60
3    20              60