在Access 2007 SQL中按聚合功能对分组中的差异进行计数

问题描述

我不是MS Access方面的专家,上次我为它编写任何内容都花了很长时间,但这也许行得通:

SELECT cd.DiagCode, Count(cd.CustomerID)
FROM (select distinct DiagCode, CustomerID from CustomerTable) as cd 
Group By cd.DiagCode;

解决方法

您好,我浏览了一段时间的论坛,并在这里问我的第一个问题。我有点束手无策,想知道是否能得到一些帮助。我正在使用Access2007,但尚未在网上找到一个很好的答案。

我的数据是诊断代码和客户ID,而我正在寻找的原因就是为什么要为每个诊断代码找到不同的客户ID计数。理想情况下,在非AccessSQL中,它看起来应该像这样:

SELECT DiagCode,Count(Distinct(CustomerID))
FROM CustomerTable
Group By DiagCode;

我知道这是一个非常简单的问题,但是我发现的答案太复杂(多个聚合函数)或太简单了。这是我为解决此问题而采取的一种方法,但是返回的结果太多:

SELECT DiagCode,Count(CustomerID)
FROM CustomerTable
WHERE CustomerID in (SELECT Distinct CustomerID from CustomerTable)
Group By DiagCode;

希望我在这里很清楚,就像我说的第一篇文章一样,感谢您的帮助。