【问题标题】:MS Access error, aggregate functionMS Access 错误,聚合函数
【发布时间】:2017-09-20 15:31:06
【问题描述】:

我正在尝试在 access 中运行下面的 sql 查询。我不断收到 MS Access 错误:

“您尝试执行的查询不包含作为聚合函数的一部分的指定表达式 'ID'”

我写的查询如下:

SELECT Subject.ID, Subject.Description, Max(DataSets.ID) AS ID_DataSets
FROM Subject 
INNER JOIN DataSets ON Subject.Description = DataSets.Subject.Value
GROUP BY Subject.ID, Subject.Description;

【问题讨论】:

  • 你确定这个关系 Subject.Description = DataSets.Subject.Value 吗?
  • MS Access 只能在表名/别名和字段之间使用一个句点限定符,除非用括号或反引号转义。请解释DataSets.Subject.Value
  • Chetan Vasudevan - 是的,我很确定这种关系。如果它是链接 2 个表的“ID”,我会喜欢它,但不幸的是我没有创建表
  • @Parfait - DataSets 表上的“主题”字段是一个多值字段,我需要显示单个值
  • 我建议不要使用多值字段(偏离关系数据库的规范化模型)。使用在 SQL 查询中效果更好的一对多连接表。

标签: sql database ms-access


【解决方案1】:

我在此引用 DataSets.Subject.Value 中看到一个错误,但我不确定它是否会生成该错误消息。试试这个版本:

SELECT s.ID, s.Description, Max(ds.ID) AS ID_DataSets
FROM Subject as s INNER JOIN
     DataSets as ds
     ON s.Description = ds.Value  -- is this correct?
GROUP BY s.ID, s.Description;

我发现查询使用表别名时更易于编写和阅读。

【讨论】:

  • 我接受写别名确实是最好的方法我真的不知道这个人是如何到达 DataSets.Subject.Value 的?这就是我在那里发表评论的原因。如果提问者在关系的那一部分有错误,那么您的查询必须是一个完美的答案
  • 我看到一个错误 ...对于未来的读者,请告知您看到的这个错误是什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多