【发布时间】:2013-06-24 09:00:51
【问题描述】:
我有一张包含数千行和十多列的平面表。我想计算每一行的每一列(非空)。
例如,在这里我有一个平面表说table A:
+=====+======+======+======+=====+======+
| Aid | col1 | col2 | col3 | ... |col10 |
+=====+======+======+======+=====+======+
| 1 | a | b | c | ... | x |
+-----+------+------+------+-----+------+
| 2 | a | b | c | ... | x |
+-----+------+------+------+-----+------+
| 3 | a | b | c | ... | x |
+-----+------+------+------+-----+------+
现在,我想在单个查询中计算所有 Aid 的所有列(非空)。
例如,如果我计算 col1,那么我需要使用
select count(*) from A where col1 is not null;
但我想要单个查询中表中每个 Aid 的所有列数(不是空值)。
我怎么能这样做?
【问题讨论】:
-
每个
Aid是什么意思?在你的例子中它是独一无二的...... -
是的,Aid 是唯一的。我想说,如果所有列包含某个值,则 Aid 1 的值计数为 10,如果一列包含空值而其他列具有某些值,则值为 9。
-
好的,现在你的问题很清楚了——你想计算包含每一行值的列。