【发布时间】:2018-05-11 11:03:08
【问题描述】:
我正在使用 MS SQL。我编写了一个简单的代码,它遍历表中的列并找到零值超过 30% 的列。我将在 @array 中保存超过 30% 零的列的名称。@count 只有列数,而 @column 的名称为所有列。
DECLARE @array varchar(MAX)
DECLARE @sql varchar(MAX),
@column as varchar(MAX)
SELECT @count = (SELECT COUNT(*) FROM sys.columns WHERE object_id =
OBJECT_ID('UVE305_TREND_2.dbo.LOGTNK'))
WHILE @counT>0
BEGIN
SET @column = (SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('UVE305_TREND_2.dbo.LOGTNK') AND column_id = @count)
SELECT @column
SET @array = (SELECT COUNT(@column) FROM UVE305_TREND_2.dbo.LOGTNK WHERE
@column = 0 )
select @array
SET @count= @count- 1
END;
IF @r_count >= CAST(@array AS INT)
SET @list= @column+','+@list;
当我尝试运行查询时,出现以下错误:
将 varchar(max) 值“TNK_99”转换为 数据类型 int。
'TNK_99' 是我的列名。 任何帮助将不胜感激。
【问题讨论】:
标签: sql sql-server