我在SQL Sever 2005中有一个表,其中许多列只包含NULL或0或0.0。 我想要一个查询来查找该表中每个列的名称,其中SUM大于0,即该表至少包含一行,其值不为空且大于零。
感谢。
答案 0 :(得分:1)
最简单的我认为将获取以下语句的输出并将其作为脚本运行。
SELECT SELECT COUNT(*), ''' + name + ''' FROM dbo.ATable WHERE ' + name + '> 0'
FROM sys.columns sc
WHERE OBJECT_NAME(OBJECT_ID) = 'ATable'
我不知道现有的系统表,但您可以通过查看各列的类型来排除任何不是数字的内容。如果我没弄错的话,你可以加入sys.types
如果你需要一个通用的解决方案,就可以将传递给execsql的动态语句进行concot,但是对于一次修复来说它会有点过分。