在Access表上转置

时间:2014-02-20 20:58:56

标签: ms-access transpose ms-access-2013

我有一个包含复选框列(约10-15)的表,如下所示:

Race  |  Disability  |  Sexual Harrassment  |  ......  

Yes         No               Yes               
No          Yes              Yes

我想要一个包含以下内容的查询结果:

Basis   |           Total
Race                  1
Disability            1
Sexual Harrassment    2

我不知道如何将不同的列放到一列中,我猜它是转置的,我不知道如何使用它。

2 个答案:

答案 0 :(得分:2)

你需要一个UNION查询来取消你的数据,就像这样

    SELECT 
        'Race' AS Basis,
        [Race] AS Response
    FROM YourTable
UNION ALL
    SELECT 
        'Disability' AS Basis,
        [Disability] AS Response
    FROM YourTable
UNION ALL
    SELECT 
        'Sexual Harrassment' AS Basis,
        [Sexual Harrassment] AS Response
    FROM YourTable

将该查询保存在Access中作为[MyDataUnpivoted],然后生成如此的总和

SELECT
    Basis,
    SUM(IIf(Response=True,1,0)) AS Total
FROM MyDataUnpivoted
GROUP BY Basis

答案 1 :(得分:0)

据我所知,从列到行没有简单的方法,通常人们会尝试从行到列。我能想到的唯一方法是遍历Table集合并将字段名称放入一个数组中,然后创建一个新表并将数组的内容作为记录写入其中。