我正在尝试在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 ??
做错了什么答案 0 :(得分:0)
group by
子句意味着每个不同的分组列组合可以得到一个结果行。这意味着您的选择列表只能包含按其分组的列或聚合函数(例如count
,sum
,min
,max
等。)
因此,您应该将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的末尾添加orig
。CFG DESCRIPTION
,它应该运行。
答案 2 :(得分:0)
我认为您需要将orig。[GFC DESCRIPTION]添加到您的论坛:
GROUP BY orig。[SONG TITLE],orig。[PUBLISHER],orig。[GFC DESCRIPTION]
如果这不适用于您的情况,请将orig。[GFC DESCRIPTION]放在聚合函数中:
SELECT orig
。SONG TITLE
,orig
。PUBLISHER
,MIN(orig
。CFG 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(特定于访问)等