Ваш count(@mField)
является счетчиком буквального значения, которое находится в @mField
, его не , разрешающего имя поля в COUNT(fldBlah)
, для этого вам нужно будет использовать динамический SQL.
Declare data1 Cursor FAST_FORWARD for select column_name
from information_schema.columns where table_name = 'repository'
Declare @mField nvarchar(255)
Declare @SQL varchar(1024)
Declare @results table (col_name varchar(128), non_nulls int)
Open data1;
fetch next from data1 into @mField;
while (@@FETCH_STATUS = 0) begin
set @SQL = 'SELECT ''' + @mField + ''', count(' + @mField + ') from repository where tablereference = ''central'''
insert @results
exec(@SQL)
Fetch next from data1 into @mField;
end
close data1;
deallocate data1;
select * from @results
Для вывода типа;
col_name non_nulls
[tablereference] 5
[another_col] 1
Там, где в столбце есть 5 ненулевых значений