【发布时间】:2015-07-16 10:07:59
【问题描述】:
我正在尝试在SQL Server 中创建一个SQL code,它动态选择特定数据库中的所有表,然后为每个表中的每一列计算缺失值和非空值的数量。我还希望将此结果插入另一个表中。
有什么方法可以在不手动更改每个列名的情况下做到这一点:
Table Name - Column selection
我有一个相同的 teradata 代码,我尝试将其转换为 SQL Server code。但我无法正确获取动态分配和插入部分。
insert into temp
values (select ''CAMP'',
rtrim(''' || tablename || '''),
rtrim(''' || columnname || '''),
rtrim(''' || columnformat || '''),
count(1),
count(rtrim(upper(case when ' || columnname || '='''' then NULL else '|| columnname ||' end))),
(cast (count(rtrim(upper(case when ' || columnname || '='''' then NULL else ' || columnname || ' end))) as float) / (cast (count(1) as float))) * 100,
count(distinct rtrim(upper(case when ' || columnname || '='''' then NULL else '|| columnname ||' end))),
min(rtrim(upper(case when ' || columnname || '='''' then NULL else '|| columnname ||' end))),
max(rtrim(upper(case when ' || columnname || '='''' then NULL else '|| columnname ||' end))),
min(len(rtrim(upper(case when ' || columnname || '='''' then NULL else '|| columnname ||' end)))),
max(len(rtrim(upper(case when ' || columnname || '='''' then NULL else '|| columnname ||' end))))
from ' || tablename ||')
在这方面的任何帮助都会很棒! 谢谢!
【问题讨论】:
-
分享你的尝试。
-
我编辑了问题以包含我尝试过的内容。任何帮助都会很棒。
-
您可以尝试在SQL中查看,而不是从不同的表中选择数据并将它们插入另一个表中。
-
我正在尝试使用它来创建所有现有表的视图以及有关它们的一些基本信息。这将帮助我了解我所有表格中的数据类型。
标签: sql sql-server procedure