MS Access Sql 查询不是聚合函数的一部分。使用计数功能
Posted
技术标签:
【中文标题】MS Access Sql 查询不是聚合函数的一部分。使用计数功能【英文标题】:MS Access Sql query not part of aggregate function. Using with Count function 【发布时间】:2015-11-30 02:45:10 【问题描述】:我正在尝试在 Access 上执行此查询:
SELECT DISTINCT Phys.FName,
Phys.LName, COUNT(*) AS NumberPatients
FROM Phys, Summary
WHERE (((Summary.Phys_ID)=[Enter Physician Id]))
AND Phys.Phys_ID = Summary.Phys_ID;
但我收到此错误:
您尝试执行的查询不包含指定的 表达式“FName”作为聚合函数的一部分。 (错误 3122)
查询仅使用计数或仅使用不同的 FName/LName 即可正常工作。只有当我将它们结合起来时才会出现问题。
【问题讨论】:
你需要一个 GROUP BY Phys.FName, Phys.LName 【参考方案1】:使用group by
,而不是select distinct
,以及明确的JOIN
:
SELECT Phys.FName, Phys.LName, COUNT(*) AS NumberPatients
FROM Phys INNER JOIN
Summary
ON hys.Phys_ID = Summary.Phys_ID
WHERE Summary.Phys_ID = [Enter Physician Id]
GROUP BY Phys.FName, Phys.LName;
【讨论】:
【参考方案2】:试试
SELECT DISTINCT Phys.FName,
Phys.LName, COUNT(*) AS NumberPatients
FROM Phys, Summary
WHERE (((Summary.Phys_ID)=[Enter Physician Id]))
AND Phys.Phys_ID = Summary.Phys_ID
Group by Phys.FName, Phys.LName
当您对其他列使用聚合函数时,您必须按这些列分组才能获得结果。更多信息请阅读documentation
【讨论】:
不客气 :) 接受任何一个答案。问候以上是关于MS Access Sql 查询不是聚合函数的一部分。使用计数功能的主要内容,如果未能解决你的问题,请参考以下文章
Access Query + 您的查询不包含指定表达式“TimeID”作为聚合函数的一部分
Access 2010 SQL--在交叉表查询中按聚合函数对行进行排序