【发布时间】:2019-07-02 07:42:10
【问题描述】:
我有一个表格,我在下面展示了一个简化示例:
ID | Item1 | Item2 | Item3 | Item4 | Item5
------------------------------------------
A | NULL | NULL | YES | YES | NULL
B | NULL | NULL | NULL | YES | NULL
C | NULL | NULL | NULL | NULL | NULL
我要返回以下数据集:
ID | Count
------------
A | 2
B | 1
C | 0
即我想计算该 ID 有多少列不是 NULL
一个潜在的解决方案是
SELECT
ID,
SUM(
IIf(Item1 is NULL,0,1)
+
IIf(Item2 is NULL,0,1)
+
IIf(Item3 is NULL,0,1)
+
IIf(Item4 is NULL,0,1)
+
IIf(Item5 is NULL,0,1)
) 'Count'
FROM
tableName
GROUP BY
ID
但实际上我使用的真实表有一百多列,我宁愿避免写出每列的名称。有没有更简单的方法来做到这一点?
【问题讨论】: