Microsoft Access 2003查询 - 计算记录并对其求和

时间:2012-12-25 11:14:32

标签: ms-access ms-access-2003

我正在使用Microsoft Access 2003创建查询并遇到问题。我是新来的!

我有两张桌子。第一个表格,我有一个记录列表,其中包含名称属性名称国家/地区州。第二个表格,我有一个属性名称的列表,属性中单位数以及该属性的国家/地区

我想计算第一张表中各州的记录数量,同时总结一下该州物业的单位数量。

我遇到的是,当我总结单位数时,单位重复!

以p为例;

表1:

名称|国家|物业名称

先生1 |州A |建立AAA

先生2 |州A |建立AAA

Mr 3 |州A |建设BBB

先生4 |州B |建立XXX

先生5 |州B |建立XXX

表2:

属性名称|国家|单位数

建立AAA |州A | 100

建立BBB |州A | 50

建立XXX |州B | 20

我的结果:

状态|单位数|没有记录

状态A | 250 | 3

州B | 40 | 2

我想要的结果:

状态|单位数|没有记录

状态A | 150 | 3

州B | 20 | 2

1 个答案:

答案 0 :(得分:2)

<强> EXPANDED

假设您使用的是Access查询构建器,则需要构建三个Select查询:

1)Table1将是第一个查询的源表。在查询中使用State字段两次,首先作为Group By字段,第二个作为Count字段。 (任何字段都可以用于计数,因为您只对记录数感兴趣。)保存查询以便在第三个查询中使用。

enter image description here

2)Table2将是第二个查询的源表。使用State字段作为Group By字段,Units字段作为Sum字段。保存此查询。

enter image description here

3)第三个查询将把信息放在一起。对于源,使用第一个和第二个查询,在State字段上使用它们之间的连接。选择State字段(来自任一查询)作为Group By Field,将第一个查询中的CountOfState字段作为Sum字段,将第二个查询中的SumofUnits字段作为Sum字段。

enter image description here

虽然Access在生成最终结果时所完成的实际工作量不会改变,但可以通过编辑基础SQL将这三个查询合并为单个查询。

通过将Table1和Table2查询插入到第三个最终结果查询中来生成新查询,该查询位于INNER JOIN语句的任一侧。新查询中的T1和T1是嵌入式查询的别名,可消除引用这些查询字段时的歧义。

无法使用查询构建器创建新查询(尽管原始的三个查询为其提供了原始资源)。相反,必须在查询生成器的SQL视图中编写/粘贴/编辑SQL。

    SELECT T1.State AS State,
           Sum(T1.CountOfState) AS Records, 
           Sum(T2.SumOfUnits) AS Units
    FROM 
          (SELECT Table1.State, 
                  Count(Table1.State) AS CountOfState
           FROM Table1
           GROUP BY Table1.State) T1
    INNER JOIN 
           (SELECT Table2.State, 
                   Sum(Table2.Units) AS SumOfUnits
            FROM Table2
            GROUP BY Table2.State) T2
    ON T1.State = T2.State
    GROUP BY T1.State;