多个值的SQL select count()

多个值的SQL select count(),sql,ms-access,ms-access-2016,Sql,Ms Access,Ms Access 2016,不是-我在MS Access中工作,因此SQL是有限的 在我的表格中,有两个相关字段。F1有一个公司名称,F2有8个文本值之一,这里称为1-8 给定一个公司名称,我需要找出每个特定的文本值有多少 例如,给定名称“company1”,F1中可能有50条记录带有“company1”。在F2中,这50条记录可能只有文本值1、3和4 在一个查询或多个查询中,我需要 1检索F1='company1'中的所有记录 2查找F2的所有不同值,其中F1=‘company1’。例如,对于此条件,F2=2、3、4或7

不是-我在MS Access中工作,因此SQL是有限的

在我的表格中,有两个相关字段。F1有一个公司名称,F2有8个文本值之一,这里称为1-8

给定一个公司名称,我需要找出每个特定的文本值有多少

例如,给定名称“company1”,F1中可能有50条记录带有“company1”。在F2中,这50条记录可能只有文本值1、3和4

在一个查询或多个查询中,我需要

1检索F1='company1'中的所有记录

2查找F2的所有不同值,其中F1=‘company1’。例如,对于此条件,F2=2、3、4或7

3找出F2中每个不同值的重复次数。继续上面的例子,可能有十个2、十个3、十个4和二十个7

这个过程是这样的-

用户输入“company1”。查询返回

我的总体想法是使用一个子查询生成一个包含所有F2值的列表,其中F1=company1,然后使用第二个子查询生成该列表中所有不同的值。然后,不知何故,我需要在第一个子查询中搜索第二个查询中每个值的重复次数

下面是一些测试代码。我这里的问题是,它在etc中返回一个[signity Level:]计数。。。因为它检查值是否在该子查询中,而不是对该子查询中的每个结果执行主查询

SELECT count(*)
FROM (
    SELECT [Significance Level:] 
    FROM all_data_tester WHERE 
    [Manufacturer Audited:] = 'Airbus Space & Defense')
WHERE [Significance Level:] in (
     SELECT distinct [Significance Level:]
     FROM all_data_tester
     WHERE [Manufacturer Audited:] = 'Airbus Space & Defense'
);
抱歉,如果这让人困惑,很难解释。我可以澄清任何事情

使用GROUPBY子句

SELECT [Significance Level:], Count(*) As Cnt
FROM all_data_tester
WHERE [Manufacturer Audited:] = 'Airbus Space & Defense'
GROUP BY [Significance Level:]
ORDER BY [Significance Level:]
这将为每个重要性级别创建一行,并带有相应的计数

您还可以通过以下方式获得每个制造商的计数:

SELECT [Manufacturer Audited:], [Significance Level:], Count(*) As Cnt
FROM all_data_tester
GROUP BY [Manufacturer Audited:], [Significance Level:]
ORDER BY [Manufacturer Audited:], [Significance Level:]

这将为每个制造商和重要性级别创建一行相应的计数。

编辑您的问题并提供示例数据和所需结果。您的数据库软件可能有限,但您的问题不必如此。听起来像是一个简单的计数*加上F2分组
SELECT [Manufacturer Audited:], [Significance Level:], Count(*) As Cnt
FROM all_data_tester
GROUP BY [Manufacturer Audited:], [Significance Level:]
ORDER BY [Manufacturer Audited:], [Significance Level:]