查询没有重复记录的访问表结果

Posted

技术标签:

【中文标题】查询没有重复记录的访问表结果【英文标题】:Query for Access Table results with no duplicate Records counted 【发布时间】:2021-07-19 18:53:30 【问题描述】:

我目前正在尝试根据两个字段查询一个表,一个带有日期,另一个带有要计算的记录。查询的结果将在一列中以数字(一月 = 1、二月 = 2 等)的形式列出月份,另一列将列出单个 UNIQUE 记录的总数。我有以下查询;

SELECT DISTINCT Month([Date Received]) AS [Month], Count([1 TeamTracking].[Asset #]) AS [CountOfAsset #] FROM [1 TeamTracking] GROUP BY Month([Date Received]);

为了测试并确保我有正确的数字,我将数据导出到 Excel 文件,并根据日期和资产# 字段删除了重复项。当月可以有多个重复的资产编号,其他月份可以有相同的资产编号。我只想每月计算一次资产 # 而不是该月的任何重复项。如果是在不同的月份,则应重新计算。例如,这是我期望的查询结果:

1 团队跟踪表:

结果:

我试过了,只是没有得到正确的数字。我在属性字段中都尝试过将唯一值和记录设置为是,也没有运气。任何援助将不胜感激。谢谢。

【问题讨论】:

您已经提出了完全相同的问题:***.com/questions/68442908/… 并收到了答复。你为什么要删除那个问题? 我更改了这个问题中一些更能反映我的数据库的信息,我也更改了我添加的图片。不知道我是否可以在原始问题中更改它并决定将其删除。查询也不起作用。 【参考方案1】:

这需要一个嵌套子查询,它首先将数据整合到唯一的记录中。然后,该查询是计算记录的外部查询的来源。

假设日期总是每个月的第一天并且数据是多年的,请考虑:

SELECT DateReceived, Count(*) AS Count FROM (
    SELECT DISTINCT DateReceived, IDnum FROM Tracking) 
GROUP BY DateReceived;

如果日期并不总是月初且数据是多年的,请考虑:

SELECT YearMo, Count(*) AS Count FROM (
    SELECT DISTINCT Format(DateReceived, "yyyymm") AS YearMo, IDnum FROM Tracking) 
GROUP BY YearMo;

如果数据不是多年的:

SELECT Month, Count(*) AS Count FROM (
    SELECT DISTINCT Month(DateReceived) AS Month, IDnum FROM Tracking) 
GROUP BY Month;

强烈建议不要在命名约定中使用空格或标点符号/特殊字符,也不要使用保留字作为名称。如果有,必须用 [ ] 括起来。

【讨论】:

以上是关于查询没有重复记录的访问表结果的主要内容,如果未能解决你的问题,请参考以下文章

连接多个表后如何从sql查询结果中删除重复记录

sql怎么查询oracle中,没有重复出现的记录(即只出现一次)和不同字段1共同存在字段2值的记录,求SQL语句

处理表重复记录(查询和删除)

oracle查询重复数据方法

sql语句 分次(多次)获取不重复记录,请高手赐教!

SQL查询删除没有主键的重复记录,保留最新的[重复]