Я пытаюсь создать некоторые пользовательские формы в нашей системе ERP с базой данных Oracle.Я столкнулся с проблемой, когда запрос нижнего уровня не может получить из поля верхнего уровня, так как это поле заполняется из запроса.
Мой вопрос здесь;Можно ли объединить эти два оператора?
Первый запрос:
SELECT
CASE WHEN VV = 'Y' AND V11 IS NULL OR V11 = 'N' THEN TO_CHAR(V, '999,999,999.00')
WHEN V11 = 'Y' AND VV IS NULL OR VV = 'N' THEN TO_CHAR(V1, '999,999,999.00')
ELSE ' '
END
FROM V_UD_TOOL_RFQ
WHERE PARENT_ID = :ID
Этот запрос извлекает правильные данные и передает поле G, но вызывает приведенный ниже запрос к ошибке.
Кроме того, без преобразования TO_CHAR в приведенном выше операторе я получаю сообщение об ошибке «ORA-00932: несовместимые типы данных: ожидается, что NUMBER получил CHAR». Есть ли другой способ решения этой проблемы?
Последний запрос:
SELECT
CASE WHEN E = 0 THEN 1
ELSE ROUND(((G+H+I) / J),2)
END
FROM V_UD_TOOL_RFQ
WHERE PARENT_ID = :ID
Я пробовал это, но получаю ошибку "ORA-00905: отсутствует ключевое слово"
SELECT
CASE WHEN E = 0 THEN 1
ELSE CASE WHEN VV = 'Y' AND V11 IS NULL OR V11 = 'N' THEN TO_CHAR(((V+H+I)/J), '999,999,999.00')
WHEN V11 = 'Y' AND VV IS NULL OR VV = 'N' THEN TO_CHAR(((V1+H+I)/J), '999,999,999.00')
END
FROM V_UD_TOOL_RFQ
WHERE PARENT_ID = :ID
В конечном итоге я пытаюсь создать первое выражение CASE для всех полей (G, H, Я, J) во 2-м запросе.
Любая помощь с этим будет принята с благодарностью.