2014-05-15 2 views
0

Я пытаюсь написать оператор Case When, но я получаю несогласованную ошибку данных. Мне нужно отобразить «Returned», если первая, когда инструкция не выполняется.sql непоследовательные типы данных: ожидаемое число получено char

CASE 
WHEN (X.RECEIVED_QTY = 0) THEN FLOOR(SYSDATE-INVENTORY_TRANS.TRANSACTION_DATE) 
WHEN (X.RECEIVED_QTY = 0) THEN 'RETURNED' 
END AS DAYS_OUT 

ответ

1

Вы не можете смешивать результаты CASE заявления, это означает, что вы не можете вернуть INT при одном условии и VARCHAR в другом. Если вы хотите вернуть Returned то вам нужно CONVERT или CAST ваших числовых значений VARCHAR

У вас также есть синтаксические проблемы с CASE.

Вы должны были бы изменить его на что-то вроде этого:

CASE X.RECEIVED_QTY 
    WHEN 0 THEN CAST(FLOOR(SYSDATE-INVENTORY_TRANS.TRANSACTION_DATE) AS VARCHAR(20)) 
    ELSE 'RETURNED' 
END AS DAYS_OUT 
+0

СПАСИБО! Это сработало – user3642416

Смежные вопросы