访问:“无法对使用“*”选择的字段进行分组。”

Access: ‘Cannot group on fields selected with '*'.’

我正在尝试根据各种 like 标准 select 行,并编​​写了以下函数:

SELECT *,
COUNT(YRKE) AS Antall_med_yrket
FROM [T8 kopi (til sletting) av T7 3]
WHERE  YRKE like "*læge*"
    OR YRKE like "*præst*"
    OR YRKE like "*Lærer*"
    OR YRKE like "*lærer*"
    OR YRKE like "*chef.*"
    OR YRKE like "*mester*"
    OR YRKE like "*Portner*"
    OR YRKE like "*portner*"
    ⋮
    OR YRKE like "*fuglefanger*"
    ⋮
    OR YRKE like "*Glasanfanger*"
GROUP BY YRKE
;

'⋮'表示省略的行。我想要做的是显示出现指定单词的所有行,并显示这些单词的命中次数。示例输出:

ID   NAVN           YRKE                      Antall_med_yrket
 1   Ole Olsen      Fuglefanger               3
 2   Per Olsen      Skogbruger (Fuglefanger)  3
 3   Olav Krogh     Fængselslæge              1
 4   Kristen Persen Gaardbruger (Fuglefanger) 3
 5   Per Kristensen Fængselsdirecteur         1

但是,当我添加 COUNT 行时,我收到如标题所示的错误消息。删除该行会根据需要提供所有行的输出,但当然没有计数。我做错了什么?

我在 Oracle 上使用 MS Access 2007。

这是正确的。以下应该有效:

SELECT YRKE, COUNT(YRKE) AS Antall_med_yrket
FROM [T8 kopi (til sletting) av T7 3]
WHERE  YRKE like "*læge*"
    OR YRKE like "*præst*"
    OR YRKE like "*Lærer*"
    OR YRKE like "*lærer*"
    OR YRKE like "*chef.*"
    OR YRKE like "*mester*"
    OR YRKE like "*Portner*"
    OR YRKE like "*portner*"
    ⋮
    OR YRKE like "*fuglefanger*"
    ⋮
    OR YRKE like "*Glasanfanger*"
GROUP BY YRKE;

在SQL聚合查询中,SELECT中的列一般需要为以下之一:

  • GROUP BY中明确提到。
  • GROUP BY 中明确提及的列组成的表达式。
  • 聚合函数的参数,例如SUM()MIN()

注意:在某些数据库中允许有一个例外(基本上,您可以说 GROUP BY id 并在 id 唯一时使用其他列)。但是,MS Access 和 Oracle 都不支持该功能。