2009-09-24 2 views
0

것은 I 플로트 값 테이블 작업 합니다만, 파라미터에 의해 열을 입력매개 변수 "SELECT AVG (@ 매개 변수)"SQL과 함께 SELECT AVG를 사용하십시오!

SELECT AVG 단언 AS I는 (파라미터) I 열 이름을 입력하면

ListVal

FROM (@var) 오류가 발생합니다. 데이터 유형 nvarchar가 평균 연산자에 유효하지 않습니다. 그러나 모든 기둥은 부유합니다.

도움말 !!! 제발

+0

이 SQL Server입니까? –

+0

감탄 부호 (코드 블록 외부)를 사용하는 것은 무례합니다 –

답변

4

동적 SQL

등을 사용해야합니다.

EXEC('SELECT AVG([' + @var + ']) AS Aver FROM ListVal') 
2

쿼리 매개 변수는 열 이름이 아닌 단일 리터럴 값을 대체합니다. 이것은 표준 SQL 동작이며 RDBMS의 모든 브랜드에서 동일하게 지원됩니다.

그래서 당신은 열 이름을 제공하고이 쿼리를 실행하는 경우로는 다음과 같습니다 의미없는 작업입니다

SELECT AVG('columnname') ... 

합니다. 문자열의 AVG()은 무엇입니까?

@Matt Rogish는 answer에서 열 이름 (또는 테이블 이름 또는 다른 SQL 구문)을 동적으로 만드는 유일한 방법은 동적 SQL을 사용하는 것입니다. 즉, 응용 프로그램 변수를 문자열로 보간 한 다음 결과 문자열을 SQL 쿼리로 사용합니다.

쿼리 매개 변수는 단일 스칼라 값만 삽입 할 수 있으며 쿼리에서 매개 변수가 해석되는 방식입니다.