2016-08-28 1 views
0

"Age_Band"로 그룹화하는 간단한 쿼리 만하고 싶습니다. 그리고 쉽게 매개 변수를 설정하여 그룹화 열을 쉽게 변경할 수 있습니다. 하지만 오류가 발생했습니다 : "각 GROUP BY 표현식에 외부 참조가 아닌 하나 이상의 열이 있어야합니다."통계에 의한 그룹의 매개 변수 사용

매개 변수 사용에 대한 실수를 어떻게 했습니까? 덕분에 많은

DECLARE @group nvarchar(50); 
DECLARE @SQLString nvarchar(500); 
DECLARE @ParmDefinition nvarchar(500); 
SET @SQLString = 
    N'SELECT AVG(Loan_Amount) as Avg_Loan_Amount 
,count(Loan_Amount) 
,SUM(Loan_Amount) as Sum_Loan_Amount 
,SQRT(SUM(Loan_Amount)) as Square_Loan_Amount 
,Age_Band 
,SUM(Interest_Paid_Amount) as Sum_Interest_Paid_Amount 
,GETDATE()as today 
    FROM [dbo].[Loan] 
    group by @groupcol'; 
SET @ParmDefinition = N'@groupcol nvarchar(50)'; 
SET @group=N'Age_Band' 
exec sp_executesql @SQLString, @ParmDefinition, 
        @groupcol = @group; 

답변

0

당신이 매개 변수를 사용하여 쿼리 문자열을 구축 할 수 있습니다함으로써 당신은 group by 절에 매개 변수를 사용할 수 없습니다. 이 같은.

DECLARE @group nvarchar(50) = N'Age_Band'; --set col name 
DECLARE @SQLString nvarchar(500); 
SET @SQLString = 
    N'SELECT AVG(Loan_Amount) as Avg_Loan_Amount 
,count(Loan_Amount) 
,SUM(Loan_Amount) as Sum_Loan_Amount 
,SQRT(SUM(Loan_Amount)) as Square_Loan_Amount 
,' + @group + ' 
,SUM(Interest_Paid_Amount) as Sum_Interest_Paid_Amount 
,GETDATE()as today 
    FROM [dbo].[Loan] 
    group by ' + @group; 
exec sp_executesql @SQLString; 
+0

감사합니다. 내 코드를 수정하고 성공적으로 실행하지만 쿼리 결과가 표시되지 않습니다. 어떻게 결과를 얻을 수 있습니까? 감사합니다 – LUSAQX

+0

'print @ SQLString'을 추가하십시오. 출력을 쿼리로보십시오. –