2016-10-14 2 views
0

다음 쿼리를 실행 중이고 피연산자 데이터 형식 varchar가 sum 연산자 오류로 잘못되었습니다. accountnature 필드는 varchar 필드이지만 INT로 캐스팅하고 오류가 계속 발생합니다.SQL - 피연산자 데이터 형식 varchar가 sum 연산자에 대해 유효하지 않습니다.

SELECT 
    'Qualified' =sum(case when (cast(AccountNature AS Int)) in ('a','b') then '1' end) 

from agreement 

group by accountnature 

내가 잘못하고있는 사항이나 해결 방법에 대한 의견이 있으십니까? 감사합니다. .

+0

"AccountNature"열의 실제 데이터 형식은 무엇입니까? – yuvi

+0

AccountNature (varchar (2), null이 아님) – BIReportGuy

+0

내 지식에 따라 해당 특정 열의 값이 1,2,3, ..... 인 경우 .이 경우 수행 할 수 있습니다.하지만 값이 a, b, c ..... cast와 같은 경우에는 – yuvi

답변

5

이 시도 :

SELECT 
    'Qualified' = sum(case when AccountNature in ('a','b') then 1 ELSE 0 end) 
from agreement 
group by accountnature 
+0

이 캐스트 함수입니다. – yuvi

+3

@RajaYuvi - 캐스트를 사용할 필요가 없습니다. –

+0

네, 저것을 시도해 보니 작동하지 않았습니다. 그래서 저는 캐스팅에갔습니다. 그러나 당신이 방금 올바른 방향으로 나를 지적했다고 생각합니다. 나는 '1'주위에 작은 따옴표를 가지고있다. 방금 제거하고 작동합니다. – BIReportGuy

1

이 시도 :

select [qualified] = sum(case when AccountNature in ('a','b') then 1 else 0 end) 
from agreement 

당신은 당신이 문자로 비교하고 있기 때문에 정수로 캐스팅 할 필요가 없습니다.

관련 문제