Access 2003 - 计算唯一值

Posted

技术标签:

【中文标题】Access 2003 - 计算唯一值【英文标题】:Access 2003 - count unique values 【发布时间】:2011-08-23 12:22:07 【问题描述】:

如何计算 Access 2003 中的唯一值? 当我这样写时:

SELECT DISTINCT Customer FROM CustomersTable;

我有作为结果的唯一客户,但是如果此代码不起作用,如何计算他们:

SELECT COUNT(*) 

FROM (SELECT DISTINCT Customer FROM CustomersTable )

(它会导致错误:“Microsoft Jet 数据库引擎找不到输入表或查询'SELECT DISTINCT Customer FROM CustomersTable'。请确保它存在并且其名称拼写正确”)

数据库示例

--Customer -- Address -- 
X               NY 
X               OR 
Y               AR 
Z               WA 

我希望结果为 3(三个唯一客户。)

【问题讨论】:

语法有效并计算不同Customer 值的数量。它对你有用吗? 我遇到错误:Microsoft Jet 数据库引擎找不到输入表或查询“SELECT DISTINCT Customer FROM CustomersTable”。确保它存在并且其名称拼写正确。 你试过了吗:SELECT COUNT(DISTINCT Customer) FROM CustomersTable; Jet/ACE SQL 不支持 COUNT(DISTINCT)。 【参考方案1】:

你需要给你的子查询一个名字:

SELECT COUNT(*) 
  FROM (SELECT DISTINCT Customer FROM CustomersTable) AS T

【讨论】:

也不行。 “Microsoft Jet 数据库引擎找不到输入表或查询 'SELECT DISTINCT Customer FROM CustomersTable'。确保它存在并且其名称拼写正确。” @Amber:你确定你使用的是圆括号(SELECT ...) AS T 而不是方括号[SELECT ...]?据我记得,Access Query Designer 倾向于将前者转换为后者...... @Amber:CustomersTable 是同一个数据库中的常规表吗? (对不起这个愚蠢的问题,但它真的应该工作......) 我知道,因为我在家里在不同的数据库中使用了这样的子查询并且它可以工作,而现在在我的办公室却不能,所以我也很惊讶。 @Amber:也许你在办公室有不同的 Access 版本?旧版本的 Access 不支持 FROM 子句中的子查询...【参考方案2】:

试试这个:

Select 
    Customer, 
    count(Customer) as count
from
    CustomersTable
group by
    Customer

好的,你现在应该试试这个:

SELECT COUNT(DISTINCT Customer) FROM CustomersTable;

希望这会有所帮助。

【讨论】:

请在您的问题中进行编辑。创建一个类似结构的表格以更清楚地显示它。我没有得到你在评论中提到的东西。 不会输出列表(X, 2) (Y, 1) (Z, 1)吗?如果我正确理解了 OP,他只想要 3 的输出。 但是SELECT COUNT(Customer) FROM [SELECT Customer, count(Customer) AS [count] FROM Main GROUP BY Customer]; 工作正常...我不知道为什么不能写得更简单... @Amber: Main?我以为你的桌子叫CustomersTable?是的,重复计算肯定是没有必要的。 好吧,你应该试试这个:SELECT COUNT(DISTINCT Customer) FROM CustomersTable;【参考方案3】:

编辑(已更正查询)

这在 Access 2007 中对我有用

SELECT Count(*) AS NumCustomers
FROM 
(
    SELECT Distinct CustomerAddress.Customer
    FROM CustomerAddress
)  AS DistinctCustomers;

【讨论】:

AFAIK,Access 不支持此语法。 查询表达式“COUNT (DISTINCT Customer)”中的语法错误(缺少运算符)【参考方案4】:

我知道这个问题可能很久以前就被放弃了,但只是针对遇到此问题的任何人,因为我在使用 C# 应用程序执行类似任务时遇到错误并在这里找到了避难所: http://www.geeksengine.com/article/access-distinct-count.html

这对我帮助很大,如果坏了,给出以下查询结构

    SELECT COUNT(columnName) as num_ofColumnNameEntries
    from
       (
        SELECT DISTINCT columnName FROM TableName
       )

【讨论】:

以上是关于Access 2003 - 计算唯一值的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS Access 2003 中删除具有唯一 ID 的重复条目?

计算 MS Access 中按名称分组的唯一值

Access 2003 报表的计算字段在导出到 xls 文件时不显示,但显示在 csv 中

如何修复此 Access 2003 错误?数据输入自动生成值

我可以在 Access 2003 中处理 Access 2010 数据库吗

将 Access 2003 更新到 2007,潜在问题?