2013-05-30 13 views
-2
SELECT LIFNR, 
SUM(CASE WHEN UPPER([WAERS])='USD' THEN ROUND(CONVERT(numeric(10,2),DMBTR)* (-1),2) 
       WHEN UPPER(WAERS)='USD' THEN ROUND(CONVERT(numeric(10,2),DMBTR),2) 
       ELSE ROUND(CONVERT(numeric(10,2),DMBTR),2) 
       END) 
AS 'AMOUNT' 
FROM tbl_BSAK 
GROUP BY LIFNR; 

안녕하세요.SQL, 데이터 형식 varchar를 숫자로 변환하는 중 오류가 발생했습니다.

방금 ​​코드 조각을 썼는데 '데이터 형식을 varchar에서 숫자로 변환하는 중 오류가 발생했습니다.'라는 오류 메시지가 계속 나타납니다. 나는 그것이 간단한 수정이라고 확신하지만, 너무 많은 시간을 문제 해결에 보냈다 ...

제발 도와주세요 !!!! 고마워!

+2

는 DMBTR의 일부 값은 숫자 – shf301

+3

으로 변환되지 않습니다이해야 숫자로 변환 할 수없는 DMBTR 열의 데이터 일 수 있습니다. 그 외에도 우리는 당신을 도울 수 있습니다. –

답변

4

구문에 따라 SQL Server라고 가정합니다. 당신이 잘못된 값을 찾으려면

, 이렇게 :

select * 
FROM tbl_BSAK 
where isnumeric(DMBTR) = 0 and DMBTR is not null; 

을 문제를 해결하려면 다음을 수행하십시오

SELECT LIFNR, 
SUM(CASE WHEN isnumeric(DMBTR) = 1and UPPER([WAERS])='USD' THEN ROUND(CONVERT(numeric(10,2),DMBTR)* (-1),2) 
       WHEN isnumeric(DMBTR) = 1 and UPPER(WAERS)='USD' THEN ROUND(CONVERT(numeric(10,2),DMBTR),2) 
       when isnumeric(DMBTR) = 1 then ROUND(CONVERT(numeric(10,2),DMBTR),2) 
       END) 
AS 'AMOUNT' 
FROM tbl_BSAK 
GROUP BY LIFNR; 
관련 문제