2013-05-30 6 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; 
Смежные вопросы