将列转换为行并获取Access中复选框的总和

问题描述

我有一个Access数据库,其中的表中都有复选框。我需要对复选框求和,但是,我想将复选框列转换为行而不是列。

下面是它在表格中的显示方式的示例:

 Name         DND  Other  CAP   SAP   DAP   EXP
Person One    -1    -1    NULL  NULL  -1    -1
Person Two    NULL  -1    -1     -1   NULL  NULL
Person Three  NULL  -1    -1    NULL  NULL  NUll

这是我希望报表显示数据的方式:

 discharge  Count
    DND        1
    Other      3
    CAP        2
    SAP        1
    DAP        1
    EXP        1

我尝试使用Case语句,但是没有正确显示

解决方法

SELECT 'DND' AS Discharge,COUNT(*) AS [Count] FROM tbl WHERE DND = -1
UNION ALL
SELECT 'Other' AS Discharge,COUNT(*) AS [Count] FROM tbl WHERE Other = -1
UNION ALL

我认为没有比这更简单的方法了。

这是空代码,不确定是否需要GROUP BY子句。

比较How to simulate UNPIVOT in Access?

,

使用union query并检查 Null

Select 
    T.Discharge,Abs(Sum(T.[Count])) As DischargeCount
From 
    (Select "DND" As Discharge,[DND] Is Not Null As [Count] From YourTable
    Union ALL
    Select "Other" As Discharge,[Other] Is Not Null As [Count] From YourTable
    Union ALL
    Select "CAP" As Discharge,[CAP] Is Not Null As [Count] From YourTable
    Union ALL
    Select "SAP" As Discharge,[SAP] Is Not Null As [Count] From YourTable
    Union ALL
    Select "DAP" As Discharge,[DAP] Is Not Null As [Count] From YourTable
    Union ALL
    Select "EXP" As Discharge,[EXP] Is Not Null As [Count] From YourTable) As T
Group By
    T.Discharge