MS Access-查询-唯一值

时间:2019-04-12 13:36:36

标签: ms-access

我有一个查询,其中的字段如下:

UniqueID | RefNum | FirstName | Surname | Aim |.....

UniqueID-是唯一字段(无重复)

RefNum-包含重复项

我要做的是创建一个新查询(基于以上内容或对此进行修改),以仅提取具有唯一RefNum的记录(从RefNum字段中删除重复项)

我这样做的方法是在“查询设计”视图中选择“分组依据” RefNum,然后为其余字段选择“第一”。它实现了我所需要的。

问题是,如果我切换到数据表视图(然后将其导出到excel以发送出去),则字段名称为“ FirstOfUniqueID”,“ FirstofFirstName”,“ FirstOfSurname”等。是否有保留方法原始字段名称(不以“ FirstOf”作为前缀)还是有另一种实现方式?

2 个答案:

答案 0 :(得分:1)

查询设计器会基于聚合函数自动为字段表达式分配别名。因此,如果您从查询的设计视图切换到 SQL视图,您将在SELECT字段列表中看到类似的内容...

First(FirstName) AS FirstOfFirstName

您可以将别名更改为其他名称,并且具有很大的灵活性。但是,至少在某些情况下,当您尝试重新使用基本字段名称作为别名时,Access会抱怨“循环引用”。我不知道是否会在这里发生,但是您可以这样尝试...

First(FirstName) AS [FirstName]

无论这是否满足您的要求,我建议您考虑使用另一种查询策略,该策略几乎完全避免了字段名别名问题。首先测试此查询,以确认它返回合适的RefNum / UniqueID对。如果您的基本查询名为 Query1 ...

SELECT q1.RefNum, Min(q1.UniqueID) AS MinOfUniqueID
FROM Query1 AS q1
GROUP BY q1.RefNum

假设返回的行正确,请将其重新连接到基础查询以仅选择与...匹配的基础查询行。

SELECT q.*
FROM
    Query1 AS q
    INNER JOIN
    (
        SELECT q1.RefNum, Min(q1.UniqueID) AS MinOfUniqueID
        FROM Query1 AS q1
        GROUP BY q1.RefNum
    ) AS sub
    ON q.UniqueID = sub.MinOfUniqueID

答案 1 :(得分:0)

如果您将查询视图切换到SQL视图,则会看到例如AS FirstOfFirstName

将其更改为AS FirstName,然后在其他字段上遵循此操作。

如果您更喜欢在设计视图中执行此操作,则可以添加FirstName: 在字段名称前面,依此类推: