【问题标题】:Calculate or setup overlap calculation in MS Access在 MS Access 中计算或设置重叠计算
【发布时间】:2014-07-21 17:41:05
【问题描述】:

我尝试在 MS Access 2010 中编写 SQL 查询时遇到困难。

我的数据是什么样的(简化)

Name - - State - - Code Bob - - NY - - A Bob - - NY - - B Bob - - NY - - C Jane - - FL - - A Jill - - FL - - B Bill - - GA - - C Will - - TN - - A Will - - TN - - C

我要计算的... 基于姓名和州的独特个体的数量: Code A and B (1 in this example) Code B and C (1 in this example) Code A and C (2 in this example)

我是 SQL 新手,不知道从哪里开始。对于如何解决此类问题,我们将不胜感激。

谢谢!

【问题讨论】:

    标签: sql ms-access ms-access-2010


    【解决方案1】:

    您可以使用自联接和聚合来做到这一点:

    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;
    

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

    【讨论】:

    • 我会试试这个并报告!一个问题,在第 4 行你写道:t1.code &lt; t2.code 为什么是这样而不是这个:t1.code&lt;&gt;t2.code
    • @ChrisG 。 . .也就是说,你只能得到 A 和 B 之一。如果你同时拥有 A 和 B,则没有理由同时包括 B 和 A。
    • 该死,打败我!我正要回答我自己的问题。也许有一天我能跟上各位大师的步伐。 :)
    • 我已将代码调整到我的数据库中,再次检查另一种方法,然后我将标记为已回答。
    • 好的,验证这一点花了很长时间,但其中一个结果偏离了 1。我的“table1”中有 80000 多条记录,并且此查询的其中一行偏离了1该死的计数。关于如何追踪错误或可能导致错误的原因的想法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多