Нельзя заменять идентификаторы (имена столбцов, имена функций и т. Д.) Параметрами.Таким образом, значение, которое вы вставляете, интерпретируется как константа, строка 'Region'
, а не ссылка на столбец.SQL Server обнаруживает, что любая группа по ключу является константой, и возвращает ошибку.
К сожалению, вам нужно использовать динамический SQL и munge строки запроса:
declare @region as nvarchar(30);
set @region = 'Region';
declare @sql nvarchar(max);
set @sql = N'
select SUM([Units_Sold])
from Table1
group by @region, Year
';
set @sql = replace(@sql, '@region', @region);
exec sp_executesql @sql;