ms访问GROUP BY错误

时间:2014-10-31 18:48:58

标签: sql-server group-by ms-access-2013

我正在尝试在MS访问中运行此SQL

SELECT `orig`.`SONG TITLE`,`orig`.`PUBLISHER`,`orig`.`CFG DESCRIPTION`
FROM `Sheet1` AS `orig`
INNER JOIN `Sale type` AS `Sale`
ON orig.`CFG DESCRIPTION`=Sale.`CFG DESC`
GROUP BY orig.`SONG TITLE` , orig.`PUBLISHER`
;

我收到一条错误消息:“您的查询不包含指定的表达式'CFG DESCRIPTION'作为聚合函数的一部分”

当我在没有GROUP BY子句的情况下运行此查询时,一切正常。我对GROUP BY ??

做错了什么

3 个答案:

答案 0 :(得分:0)

group by子句意味着每个不同的分组列组合可以得到一个结果行。这意味着您的选择列表只能包含按其分组的列或聚合函数(例如countsumminmax等。)

因此,您应该将CFG DESCRIPTION添加到group by子句:

SELECT `orig`.`SONG TITLE`,`orig`.`PUBLISHER`,`orig`.`CFG DESCRIPTION`
FROM `Sheet1` AS `orig`
INNER JOIN `Sale type` AS `Sale`
ON orig.`CFG DESCRIPTION`=Sale.`CFG DESC`
GROUP BY orig.`SONG TITLE` , orig.`PUBLISHER`,`orig`.`CFG DESCRIPTION`
;

或者从选择列表中删除它:

SELECT `orig`.`SONG TITLE`,`orig`.`PUBLISHER`
FROM `Sheet1` AS `orig`
INNER JOIN `Sale type` AS `Sale`
ON orig.`CFG DESCRIPTION`=Sale.`CFG DESC`
GROUP BY orig.`SONG TITLE` , orig.`PUBLISHER`
;

当然,取决于您需要的结果。

答案 1 :(得分:0)

GROUP BY是一个全有或全无的概念,你选择的每一列都需要在子句中,除非它是一个聚合。在GROUP BY的末尾添加origCFG DESCRIPTION,它应该运行。

答案 2 :(得分:0)

我认为您需要将orig。[GFC DESCRIPTION]添加到您的论坛:

GROUP BY orig。[SONG TITLE],orig。[PUBLISHER],orig。[GFC DESCRIPTION]

如果这不适用于您的情况,请将orig。[GFC DESCRIPTION]放在聚合函数中:

SELECT origSONG TITLEorigPUBLISHER,MIN(origCFG DESCRIPTION) 来自Sheet1 AS orig INNER JOIN Sale type AS Sale ON orig。CFG DESCRIPTION = Sale。CFG DESC GROUP BY orig。SONG TITLE,orig。PUBLISHER ;

您可以使用任何聚合函数,例如MAX,FIRST(特定于访问)等