内置函数和分组在 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 - 报告详细信息部分布局与前一个重叠以避免多余的行?
使用 Access SQL 函数时,Microsoft Access ODBC 驱动程序导致访问冲突