[英]Count null or non null values for every column in a table
我需要有关为表中所有表的null / null值编码计数器的帮助。 我知道如何在一列中执行此操作,但不知道如何将其与所有列合并。
在例子中
CITY STATE CONTINENT
MICHAEL.E NULL NY NA
JOHN.D PARIS FR EU
NICOLAS.B FRANKFURT GE EU
MING.Y NULL NULL AF
所以我会得到像
column null not_null ....
city 2 2
state 1 3
continent 0 4
我确定它必须与可以从中获取的所有列ID的列表一起使用
SELECT DISTINCT AC.object_id, AC.name, AC.column_id
FROM SYS.all_columns AC JOIN sys.all_objects AO
ON AC.object_id=AO.object_id
WHERE AO.name='MY_TABLE_NAME'
而且由于我有很多要处理的表,其中许多都有600多个列,因此我需要该应用程序的解决方案。
我会使用APPLY
:
select cols as [column],
sum(case when col is null then 1 else 0 end) as [null],
sum(case when col is not null then 1 else 0 end) as [not_null]
from table t cross apply
( values ('city', city),
('state', state),
('continent', continent),
. . .
) tt (cols, col)
group by cols;
编辑 :
select cols,
sum(case when col is null then 1 else 0 end) as Null_value,
sum(case when col is not null then 1 else 0 end) as not_null_value
from TABLE_NAME cross apply
( values ('Column_1', Column_1),
('Column_2', Column_2),
('Column_3', Column_3),
('Column_4', Column_4),
('Column_5', Column_5)
) tt (cols,col)
group by cols;
SQL Server和Oracle
with CTE as
(
select ColName, ColVal
from
(
select name, city, state, continent
from mytable
) t1
unpivot
(
ColVal for ColName in (city, state, continent)
)
)
select ColName,
sum(case when ColVal is null then 1 else 0 end) as nulls,
sum(case when ColVal is null then 0 else 1 end) as not_nulls
from CTE
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.