Sql 计算每列的值数
假设以下Sql 计算每列的值数,sql,sql-server,tsql,Sql,Sql Server,Tsql,假设以下表 --------------------------------------------- ID Col1 Col2 Col3 Col4 ... ColN -------------------------------------------- 1 bla foo abc 2 foo abc 3 bar 4 baz 5 ba
表
---------------------------------------------
ID Col1 Col2 Col3 Col4 ... ColN
--------------------------------------------
1 bla foo abc
2 foo abc
3 bar
4 baz
5 baz bar cuz
6 123 foo
7 123
8 oof
--------------------------------------------
是否有一种方法可以列出每列的值数,而不必对每列进行单独的查询
因此,输出将如下所示:
----------
Col Hits
----------
Col1 4
Col2 3
Col3 5
Col4 0
...
ColN 2
----------
任何朝正确方向的推进都将是伟大的 您可以取消打印并聚合:
select v.which, count(v.col)
from t cross apply
(values ('col1', col1), ('col2', col2), . . . ('coln', coln)
) v(which, col)
group by v.which;
什么是“值”,即如果foo
在一列中出现两次,是一个值还是两个值?其他值是否为空,是否算作一个值?