Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access Microsoft Access 2003查询-计数记录并求和_Ms Access_Ms Access 2003 - Fatal编程技术网

Ms access Microsoft Access 2003查询-计数记录并求和

Ms access Microsoft Access 2003查询-计数记录并求和,ms-access,ms-access-2003,Ms Access,Ms Access 2003,我正在使用Microsoft Access 2003创建查询,遇到了一个问题。我是新来的 我有两张桌子。在第一个表中,我有一个记录列表,其中包括名称、属性名称和国家/地区。第二个表中,我列出了地产名称、地产中的单位数、地产的国家/地区 我将按状态统计第一个表中的记录数,同时汇总该属性在该状态下的单元数 我遇到的是,当我对单位数求和时,单位会重复 例如, 表1: 名称|状态|属性名称 先生1 |州A |大厦AAA 先生2 |州A |大厦AAA 3 |州A |大厦BBB XXX大厦4 |州B |先生

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

我有两张桌子。在第一个表中,我有一个记录列表,其中包括名称属性名称国家/地区。第二个表中,我列出了地产名称、地产中的单位数、地产的国家/地区

我将按状态统计第一个表中的记录数,同时汇总该属性在该状态下的单元数

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

例如,

表1:

名称|状态|属性名称

先生1 |州A |大厦AAA

先生2 |州A |大厦AAA

3 |州A |大厦BBB

XXX大厦4 |州B |先生

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

扩大

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

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

2) 表2将是第二个查询的源表。将“状态”字段用作“分组依据”字段,将“单位”字段用作“总和”字段。也保存此查询

3) 第三个查询将把信息汇集在一起。对于源,使用第一个和第二个查询,并在State字段上连接它们。选择状态字段(来自任一查询)作为分组依据字段,选择第一个查询中的CountOfState字段作为总和字段,选择第二个查询中的SumoUnits字段作为总和字段

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

新查询是通过将Table1和Table2查询插入到第三个最终结果查询(位于内部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;

是的,我正在使用查询生成器。谢谢。但是,有没有更短的方法呢?请看我对答案的补充。在我最初的回答中,我猜测您可能不太熟悉SQL,或者不太熟悉SQL,所以我选择了我希望能够避免混淆的方法。干杯