表中具有非空值的每个列的计数-Oracle

ang

我有一张桌子:

表格1

col1        col2        col3        col4
a           b           (null)      c
a           b           (null)      c
a           (null)      (null)      c
(null)      b           (null)      (null)
a           b           (null)      (null)
a           b           (null)      (null)

我的桌子上有大约300列。我需要查找每个非空列的值计数,而无需在表中键入每个列名称。

输出为:

column_name         count_of_non_null
col1                5
col2                5
col3                0
col4                3

有没有办法做到这一点?

我为巴克工作

您需要动态的PL / SQL来编写条件聚合类型的查询:

select 'col1' col, count(case when col1 is null then 1 end) from table1
union all
select 'col2' col, count(case when col2 is null then 1 end) from table1

因此,您的PL / SQL代码将遵循以下原则

declare 
  v_cmd varchar2(10000);
begin 
  for c_column in (select column_name from user_tab_columns where table_name = 'table1') loop
    v_counter := v_counter + 1;
    v_cmd := v_cmd || 'select ''' || c_column.column_name  || ''' col, count(case when ' || c_column.column_name || ' is null then 1 end) from table1 union all ';
  end loop;
  execute immediate left(v_cmd, length(v_cmd) - 11);
end;
/

我没有测试

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Oracle中获取具有特定值的列范围

Oracle,我如何获取COMMENTS不为空且具有特定列的表

打印具有空值的列名称oracle

Oracle查找具有特定列的所有表

UPDATE列数据具有与Oracle上另一个表最接近的值

如何使用Oracle SQL获取多个列中的第一个非零/非空值和最后一个零/非空值

如何在Oracle中基于一个具有空值的列从两个不同的列中进行选择

根据oracle中的列值联接表

具有多列的表中每个组的第一个非空值

唯一值约束,表中具有多个列,而不是Oracle中的组合

在Oracle SQL表的单独列中显示计数条件的结果

在Oracle SQL中,如何连接具有多值列的表

当列中的行为空时,ORACLE显示计数为零

如何列出在oracle sql中具有特定列的架构中的所有表?

如何在ORACLE中使用GETDDL获取表中具有DEFAULT值的列

具有空值的Oracle查询

SQL Server与Oracle中具有空值的列

对“with”中的每个分组值进行计数(Oracle SQL)

Oracle SQL 查询以检索列中的值等于另一个表中的值计数的记录

查询以过滤具有相同非主键值的行,然后从 Oracle 中的结果中排除具有另一个空列的记录

Oracle SQL 中的条件连接仅返回非空值

Oracle - 从具有特定列和值的所有表中获取数据的 SQL

通过 Oracle 中的函数更改表并添加具有默认值的新列

在 Oracle 中创建具有相同列的多个表

Python cx_Oracle Insert Into 具有多列自动值的表 (1:,2: ... 100:)

比较 2 个表的多列,其中一些列在 oracle 中具有逗号分隔值

Oracle - 验证表是否存在与具有表名值的列同名

在 Oracle SQL Developer 中识别非空表

如果列存在于具有条件的其他表中,则 Oracle 计数