问题描述
我有一个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