我创建了一个存储过程。 @Sea是用户的输出参数。在内联查询中它正在执行但在存储过程中没有得到错误。
Create Procedure [dbo].[procedure name]
(
@APTSeason NVARCHAR(1000),
@rptsummary NVARCHAR(1000),
@Sea NVARCHAR(1000)
)
AS
BEGIN
SELECT (@Sea),
Sum(ProjectedRevenue) as 'Total_$',
Sum(TotalSalesUnits) as 'Total_U',
From table name
group by @Sea
END
Go
错误:
每个GROUP BY表达式必须至少包含一个不是外部引用的列
答案 0 :(得分:0)
- GROUP BY CLAUSE应该包括SELECT QUERY中的列,没有任何立场或常数。
您可以尝试以下步骤进行解决:
它会给出结果而不会出错。
答案 1 :(得分:0)
我认为您正在寻找Dynamic SQL
:
Create Procedure [dbo].[procedure name]
(
@APTSeason NVARCHAR(1000),
@rptsummary NVARCHAR(1000),
@Sea NVARCHAR(1000)
)
AS
BEGIN
DECLARE @SQL VARCHAR(MAX)
SET @SQL = 'SELECT (' + QUOTENAME(@Sea) +'),
Sum(ProjectedRevenue) as ''Total_$'',
Sum(TotalSalesUnits) as ''Total_U'',
From table name
group by ' + QUOTENAME(@Sea)
PRINT(@SQL)
--EXEC(@SQL) --Comment this in if the previous "Print" outputs the correct SQL
END
Go
PS:如果不在SP中的任何地方使用@APTSeason
和@rptsummary
,我就不会看到parentClosedWS[i];
和$("#workShop option[value=" + parentClosedWS[i] + "]").prop('disabled', true);
。