内置函数和分组在 Microsoft Access 中不起作用

Posted

技术标签:

【中文标题】内置函数和分组在 Microsoft Access 中不起作用【英文标题】:Built in Functions and Grouping is not working in Microsoft Access 【发布时间】:2015-05-20 15:25:44 【问题描述】:

我正在尝试使用 Microsoft Access 中的内部联接从三个表中进行选择。在其中一个字段中,我还需要选择它返回了多少条记录。

SELECT Person.FirstName, Person.LastName, Person.Phone, 
Person.Email,Person.Address, Room.RoomNo, Room.Type, Building.Name, 
Floor.Name,count(*) as result

FROM (Floor INNER JOIN (Building INNER JOIN 
Room ON Building.BuildingID = Room.BuildingID) ON Floor.FloorNo = 
Room.FloorNo) INNER JOIN (Person INNER JOIN Patient ON Person.Username = 
Patient.Username) ON Room.RoomNo = Patient.RoomNo

WHERE (((Person.FirstName) Like "*" & [Forms]![search]![firstnameKey] & "*")
AND ((Person.LastName) Like "*" & [Forms]![search]![lastnameKey] & "*")) AND 
(patient.status = 1)

GROUP BY Patient.username  ;

【问题讨论】:

你得到什么错误信息? @hypetech 您的查询不包含指定的表达式“名字”作为聚合函数的一部分 【参考方案1】:

只要您有一个聚合函数,您就必须group by 未计算的字段。只需查看您的选择语句,您就会返回多个字段,即:Person.Firstname, Person.Lastname 等。我相信您将不得不group by 那些非聚合字段。

示例代码:

SELECT Person.FirstName, Person.LastName, Person.Phone, Person.Email, Person.Address, Count(*) as Result <br>
From Table1 join table 2 -- etc <br>
WHERE a = b -- etc <BR>
GROUP BY Person.FirstName, Person.LastName, Person.Phone, Person.Email, Person.Address

【讨论】:

我将GROUP BY 用于COUNT 函数 我在原始答案中包含了一些示例代码。这是您应该尝试的基本展示。您仍然必须按我未包含的所有字段进行分组。不要将 Count(*) 作为 Group By 语句的一部分。希望对您有所帮助。 如果您查看***.com/questions/19430500HansUp 为您遇到的同一问题提供了相当详细的答案。 好吧,我也是这样实现的。有效。但是,问题是,count 函数没有给我正确的结果。它总是返回 1 我必须查看您正在查看的表格以及查询的预期输出,才能发挥作用。看来现在您必须查看查询背后的逻辑。

以上是关于内置函数和分组在 Microsoft Access 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

差距和孤岛 - Microsoft Access

在 Microsoft Access 报告中的每个组之后重新编号页码

如何将 microsoft access - 报告详细信息部分布局与前一个重叠以避免多余的行?

使用 Access SQL 函数时,Microsoft Access ODBC 驱动程序导致访问冲突

Microsoft Access,计算 - 文本框控件源与 VBA 函数

我可以从 Microsoft Access 调用 SQL Server 的用户定义函数吗