Sql 在MS Access中计算或设置重叠计算

Sql 在MS Access中计算或设置重叠计算,sql,ms-access,ms-access-2010,Sql,Ms Access,Ms Access 2010,我很难在MS Access 2010中编写SQL查询 我的数据看起来像什么(简化) Name--State--code 鲍勃--纽约--A 鲍勃--纽约--B 鲍勃--纽约--C 简--FL--A 吉尔--FL--B 比尔--GA--C Will--TN--A Will--TN--C 我想计算的是。。。 基于姓名和状态的唯一个人数量的计数: 代码A和B(本例中为1) 代码B和C(本例中为1) 代码A和C(本例中为2) 我是一个SQL新手,不知从哪里开始。在如何解决这样一个问题上向正确的方向努力将

我很难在MS Access 2010中编写SQL查询

我的数据看起来像什么(简化)

Name--State--code
鲍勃--纽约--A
鲍勃--纽约--B
鲍勃--纽约--C
简--FL--A
吉尔--FL--B
比尔--GA--C
Will--TN--A
Will--TN--C

我想计算的是。。。 基于姓名和状态的唯一个人数量的计数:
代码A和B(本例中为1)
代码B和C(本例中为1)
代码A和C(本例中为2)

我是一个SQL新手,不知从哪里开始。在如何解决这样一个问题上向正确的方向努力将是非常感激的


谢谢

您可以使用自连接和聚合来完成此操作:

select t1.code as code1, t2.code as code2, count(*) as NumOverlaps
from table1 as t1 inner join
     table1 as t2
     on t1.name = t2.name and t1.state = t2.state and t1.code < t2.code
group by t1.code, t2.code;
选择t1.code作为code1,t2.code作为code2,count(*)作为NumOverlaps
表1中的t1内部联接
表1为t2
在t1.name=t2.name和t1.state=t2.state和t1.code

注意:这假设原始数据中没有重复数据(您的示例数据没有重复数据)。

我将尝试并报告!你在第4行写了一个问题:
t1.code
为什么是这样,而不是这个:
t1.codet2.code
@ChrisG。那就是说,你只得到A和B中的一个。如果你有A和B在一起,没有理由也包括B和A。该死的,打败我吧!我正要回答我自己的问题。也许有一天我能跟上你的步伐我已经根据我的数据库调整了代码,对另一个方法进行了双重检查,然后我将标记为已回答。好的,验证这一点花了很长时间,但其中一个结果以1为准。我的“table1”中有8万多条记录,而这个查询的其中一行被1个该死的计数关闭了。思考如何追踪错误或是什么原因导致了错误?