如果我在表中有2行和5列,并且当我运行SQL查询时,我应该输出10表,而不是表中的单元格。请帮我查询一下。
第二个问题:查询以查找一行中的数据。我需要两种类型的查询,第一种:查询应排除空值,Null值和secondquery应仅包含空值。 例如。一张表有10行和5列。在第一行中,数据存在于所有五列中。因此,对于第1行,我将计数为5.在第二行中,数据仅存在于4列中,最后一列没有数据,即它是空白的。因此它将给出计数同样假设如果第3行有4列数据,但任何列中的空值应该计为4。
请帮帮我
答案 0 :(得分:0)
总“细胞”的数量很容易:
select count(*) * 5 from T; /* no way to count the columns dynamically */
其他人并不难:
select
case when col1 is not null then 1 else 0 end +
case when col2 is not null then 1 else 0 end + ... as NonNulls
case when col1 <> '' then 1 else 0 end +
case when col2 <> '' then 1 else 0 end + ... as NonNullNonEmpty
from T
我相信你想要逐行而不是整个表格聚合。用其他方式包裹sum()
。
如果由于某种原因要更改列数,则必须更改查询。
答案 1 :(得分:0)
这将给你总数。列:
从INFORMATION_SCHEMA.columns中选择count(*),其中TABLE_NAME ='YourTableName';
这就是你问题的完整解决方案:
选择count(*)*(从中选择count(*) INFORMATION_SCHEMA.columns其中TABLE_NAME ='youtablename')来自'yourtablename';