在Access中排序计数

时间:2014-11-16 22:08:42

标签: ms-access

我正在使用Access 2013,我在名为Survey的表中有许多是/否字段。我有25个调查问题,人们检查是否为真(是),我正在查询整个数据库中的字段,以计算每个字段输入的人数是多少。我的表的一个子集是:

SurveyID AutoNumber
MemberID Number
Question1 Yes/No
Question2 Yes/No
Question3 Yes/No

等...

以下查询针对上表运行,并且是我所拥有的子集,因为它只代表三个字段:

SELECT Count(IIf([Survey]![Question1]=True,1,Null)) AS CountOfQuestion1, Count(IIf([Survey]![Question2]=True,1,Null)) AS CountOfQuestion2, Count(IIf([Survey]![Question3]=True,1,Null)) AS CountOfQuestion3
FROM Survey;

这很好用(IIF位是由于Access和它的陌生感)。我的问题是,我现在如何订购?每个结果都作为查询中的单独字段出现,我需要对所有字段的结果进行排序,而不仅仅是一个字段。例如,我可能会得到以下结果:

CountOfQuestion1 34
CountOfQuestion2 7
CountOfQuestion3 11

我需要能够根据数字对此进行排序,因此我知道哪个计数最高。我希望得到:

CountOfQuestion1 34
CountOfQuestion3 11
CountOfQuestion2 7

我觉得我错过了一些明显的东西,但任何帮助都会非常感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

看起来你想要的是行而不是列。实现此目的的一种方法是对每个问题计数使用单独的查询,然后使用union运算符将结果合并在一起,如下所示:

SELECT 
 'Q1' AS Question, Count(IIf([Survey].[Question1]=True,1,Null)) AS QuestionCount
FROM Survey
UNION ALL
SELECT 
 'Q2' AS Question, Count(IIf([Survey].[Question2]=True,1,Null)) AS QuestionCount
FROM Survey
UNION ALL
SELECT 
 'Q3' AS Question, Count(IIf([Survey].[Question3]=True,1,Null)) AS QuestionCount
FROM  Survey
ORDER BY QuestionCount DESC

这会使输出看起来像这样:

Question QuestionCount
-------- -------------
Q2       4
Q1       3
Q3       2

答案 1 :(得分:0)

在访问是/否字段可以求和,因此以下内容应该有效。 选择ABS(Sum(Question1))作为CountOfQuestion1,ABS(Sum(Question2))作为CountOfQuestion2 来自调查