Каждое выражение GROUP BY должно содержать как минимум - PullRequest
0 голосов
/ 28 ноября 2018
Declare @region as nvarchar(30)

Set @region = 'Region'

select SUM([Units_Sold]) 
from Table1 
group by @region, Year

Region и Year - это столбцы, и я должен пройти через несколько столбцов и заменить значения @region,

, но он показывает ошибку как

Каждое выражение GROUP BY должно содержать хотя бы один столбец, который не является внешней ссылкой.

Помощь будет очень полезна

1 Ответ

0 голосов
/ 28 ноября 2018

Нельзя заменять идентификаторы (имена столбцов, имена функций и т. Д.) Параметрами.Таким образом, значение, которое вы вставляете, интерпретируется как константа, строка '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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...