不 - 我在MS Access中工作,因此SQL是有限的。
在我的表中,有两个相关字段。 F1具有公司名称,F2具有8个文本值之一,此处称为1-8。
考虑到公司名称,我需要找到每个特定文本值的数量。
例如,给定名称' company1,'可能有50条记录与' company1'在F1。在F2中,这50条记录可能只有文本值1,3和4。
在查询(或多个查询)中,我需要
1)检索F1 =' company1'
的所有记录2)找到F2的所有不同值,其中F1 =' company1。'例如,对于这种情况,F2 = 2,3,4或7
3)查找F2中每个不同值的重复次数。续在上面的例子中,可能有十个2,十个3,十个4和二十七个。
这个过程看起来像这样 -
用户输入' company1。'查询返回
Value | Count
2 | 10
3 | 10
4 | 10
7 | 20
我的一般想法是使用子查询进行查询以生成每个F2值的列表,其中F1 = company1,然后是第二个子查询,以生成该列表中的所有不同值。然后,不知何故,我需要在第一个子查询中搜索第二个查询中每个值重复的次数。
这是一些测试代码。我的问题是它在(etc ...)中返回[重要性级别:]的计数,因为它检查该值是否在该子查询中,而不是对该子查询中的每个结果执行主查询。
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'
);
很抱歉,如果这令人困惑,很难解释。我可以澄清任何事情
答案 0 :(得分:1)
使用GROUP BY子句
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:]
这会为每个制造商创建一行,并使用相应的计数创建显着性水平。