我在逐列浏览并获取每列中所有非空值的计数时遇到问题。我认为问题是我如何获取列名称。在最后一个选择语句中,我试图选择每列中的所有值,我只是获取与行数一样多的列名称。知道如何解决这个问题吗?
DECLARE @cnt INT = 1;
WHILE @cnt < (SELECT COUNT(*)
FROM mySchema.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tblName') + 1
BEGIN
DECLARE @column varchar(9) = (select column_name
FROM mySchema.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tblName'
AND ordinal_position = @cnt);
SELECT @column
FROM [mySchema].[dbo].[tblName]
WHERE @column is not null
AND @column <> ''
SET @cnt = @cnt + 1;
END;
最佳答案
select @variable 只会返回一个变量值。我相信你需要使用一些动态 SQL。也许像 exec('select ' + @colname + ' from ' etc) 这样的东西会为你工作(至少它会在 MS SQL Server 中工作)。
关于mysql - 从表中的所有列中选择所有非空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30986307/