0

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

我有2张桌子。第一个表,我有一个记录列表,其中包括名称属性名称国家/地区。第二张表,我有一个财产名称列表,财产中的单位数量和财产所在的国家/地区。

我想按状态计算第一个表中的记录数,同时总结该属性在该状态下的单元数。

我遇到的是,当我对单位数量求和时,单位重复!

举个例子;

表格1:

姓名 | 状态 | 属性名称

1 先生 | 状态 A | 建设 AAA

2 先生 | 状态 A | 建设 AAA

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

4

1 回答 1

2

扩大

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

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

在此处输入图像描述

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

在此处输入图像描述

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

在此处输入图像描述

虽然 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;
于 2012-12-25T13:15:37.843 回答