2012-03-12 3 views
3

나는 테이블은 감옥이라고하고 AMT 사의의 데이터 유형은 플로트이며, 샘플 데이터는 다음과 같습니다합계 연산자에 대해 유효 대 Varchar는

Select Acct,Period,F_year, Sum(AMT) as Amt 
from dbo.Cos 
Group By Acct,Period,F_year 
Where Amt is not null 

그러나 내가 : 내가 같은 쿼리를 작성

Acct Period F_year Amt 
Detf 1  2011  Null 
Detf 2  2011  Null 
Detf 3  2011  1669.57 
FTE 1  2011  3205.11 
FTE 2  2011  0 
FTE 3  2011  Null 

이 오류가 발생합니다.

Msg 8117, Level 16, State 1, Line 1 
Operand data type varchar is invalid for sum operator. 

아무도 도와 줄 수 있습니까? 이 일을

답변

15

시도 : Amt 의도

Select Acct,Period,F_year, Sum(isnull(cast(AMT as float),0)) as Amt 
from dbo.Cos 
Group By Acct,Period,F_year 
+1

언제나처럼 빠른 속도! – Taryn

+0

@lcarus 여전히 동일한 오류 메시지가 나타납니다. – peter

+0

@peter가 내 대답을 업데이트했습니다. 시도해 봐. – Icarus

2

경우는 수학 연산에 사용되는, 그것은 유형 Decimal하지 varchar해야한다.

+0

플로트 데이터 유형 – peter

+0

@peter - 그렇지 않으면 오류 메시지가 나타납니다. 그것이 '떠 다니는'것이라면 그것을 던질 필요가 없습니다. 그래서 Maxx에 동의합니다. 컬럼 타입은'varchar'가 아니어야합니다. – Leigh

3

분명히 값 "1669.57"은 문자열입니다. 그렇다면이 값을 다른 값에 추가한다는 것은 무엇을 의미합니까?

오류 메시지가 정확합니다. 텍스트 값을 함께 추가하는 것은 유효하지 않습니다. 그것이 유효하다면 나는 결과가 무엇인지 말해 줄 수 없었다.

열 유형을 숫자 유형으로 변경하거나 추가하기 전에 어떻게 든 변환해야합니다.