求和表达式聚合错误

时间:2017-07-07 15:23:08

标签: sql ms-access ms-access-2007

我正在重写这个问题,因为戈登·林诺夫告诉我,如果我编辑了另一个,那么它可能会变得粗鲁 - 所以这不是重复,只是一个修正。

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

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

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

我目前的代码如下:

trim()

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您的聚合语句出现概念错误。运行此查询时,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