聚合函数的编程错误

时间:2016-02-17 17:38:26

标签: mysql ms-access aggregate

SELECT ID, AppID, Description, Min([Transaction Date]) AS Expr1 
FROM AppProsHist 
WHERE [Description]=[Non-Final Rejections] 

我不断收到错误消息:

  

您尝试执行不包含指定的查询   表达" ID"作为集合函数的一部分。

它还说它" AppID"我该怎么办?我一般都很困惑。

2 个答案:

答案 0 :(得分:0)

所有非聚合列都需要GROUP BY子句。 对于您的查询,这可能看起来像这样:

SELECT ID, AppID, Description, Min([Transaction Date]) AS Expr1
FROM AppProsHist
WHERE [Description]='Non-Final Rejections'
GROUP BY ID, AppID, Description

但是,很可能无法获得您想要的结果,因为每行的描述可能非常独特。因此,您可能还希望从查询中排除描述,除非它足够独特,可以在此处使用。

另请参阅MySQL Reference for GROUP BY (Aggregate) Function DescriptionsMSDN Reference for Aggregate Functions

答案 1 :(得分:0)

使用MIN(或MAX或AVG等)函数,您正在使用所谓的聚合函数。简单地说,这些功能一次可以处理多个记录。但是,它们不能在单个记录上工作(并抛出上述异常),因为一条记录的MIN始终是相同的。

每当您使用任何类型的分组或聚合时,查询中的所有项目也必须是聚合函数或分组的一部分。如下:

SELECT ID, AppID, Description, Min([Transaction Date]) AS Expr1 
FROM AppProsHist 
WHERE [Description]=[Non-Final Rejections] 
GROUP BY ID, AppID, Description