У меня есть таблица со столбцами: [1959], [1960], [1961] ... [2016]
И я написал запрос:
DECLARE @cnt INT = 1959;
WHILE @cnt < 2017
BEGIN
DECLARE @sql NVARCHAR(1000)
SET @sql = 'SELECT @cnt as ''Year'', DC.[Code], PT.[Country Name], PT.[@colname] as ''totalGDP'', PG.[@colname] as ''growthGDP''
FROM [dbo].[GDP] PT
INNER JOIN [dbo].[GDPgrowth] PG ON PT.[Country Name]=PG.[Country Name]
INNER JOIN [dbo].[Dictionary] DC ON PT.[Country Name]=DC.[Country]'
SET @sql = REPLACE(@sql, '@colname', CAST(@cnt AS VARCHAR(255)));
EXEC(@sql);
SET @cnt = @cnt + 1;
END;
, но что-тонеправильно, я получаю сообщение об ошибке:
Сообщение 137, Уровень 15, Состояние 2, Строка 7
Необходимо объявить скалярную переменную "@cnt"
Чтоне так и как я могу это исправить?