У меня есть следующий псевдо-регистр:
WITH SUB_Q1(
... COMPLEX CALCULATION AS MYVALUE
),
SUB_Q2(
... COMPLEX CALCULATION AS MYVALUE
)
SELECT
*
FROM MAIN_TABLE
И мне нужно добавить MYVALUE к окончательному запросу. MYVALUE является условным внутри MAIN_TABLE, т. Е. Если столбец XPTO равен NULL, я хочу значение из SUB_Q1, иначе значение из SUB_Q2
Единственный способ, которым мне удалось заставить его работать, был:
SELECT
MAIN.*,
DECODE (XPTO, NULL, SUB_Q1.MYVALUE, SUB_Q2.MYVALUE) AS MYVALUE,
FROM MAIN_TABLE
LEFT JOIN SUB_Q1 ON..
LEFT JOIN SUB_Q2 ON..
Однако это имеет узкое место в производительности, так как сложные вычисления SUB_Q1 и SUB_Q2 выполняются, когда в каждой строке действительно требуется только один из них.
Пожалуйста, сообщите. Спасибо