SQL用于查找表的所有列的名称,其中列的SUM大于零

时间:2010-11-01 19:05:36

标签: sql sql-server sql-server-2005 tsql jdbc

我在SQL Sever 2005中有一个表,其中许多列只包含NULL或0或0.0。 我想要一个查询来查找该表中每个列的名称,其中SUM大于0,即该表至少包含一行,其值不为空且大于零。

感谢。

1 个答案:

答案 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,但是对于一次修复来说它会有点过分。