首页 > 解决方案 > 嵌套选择以计算项目并将它们汇总到 MS Access 的新列中

问题描述

我在 MS Access 中有一个下表,并希望在一个表中获得计数,如下所示。按系统分组,两列计算锁定/解锁状态。

|SYSTEM|LOCK_STAT|
------------------
|A     |Locked   |
|A     |Unlocked |
|A     |Locked   |
|B     |Locked   |
|B     |Unlocked |
|B     |Unlocked |

结果应该如下:

|SYSTEM|UNLOCKED|LOCKED|
| A    |       1|     2|
| B    |       2|     1| 

标签: sqlms-access

解决方案


用于IIF()条件聚合:

select
  SYSTEM,
  sum(iif(lock_stat = 'Unlocked', 1, 0)) as UNLOCKED,
  sum(iif(lock_stat = 'Locked', 1, 0)) as LOCKED
from tablename
group by SYSTEM

或对布尔条件求和,因为TRUE转换为-1,得到它们的绝对值:

select
  SYSTEM,
  abs(sum(lock_stat = 'Unlocked')) as UNLOCKED,
  abs(sum(lock_stat = 'Locked')) as LOCKED
from tablename
group by SYSTEM

推荐阅读