oracle: декодирование и выбор результата подзапроса

У меня есть запрос оракула, и его часть вычисляет какое-то значение с помощью DECODE. Например:

SELECT ..., 
      (SELECT DECODE((SELECT 23 FROM DUAL), 
                      0, null,
                     (SELECT 23 FROM DUAL))  
         FROM DUAL) 
  FROM ...

] Здесь значение "23" вычисляется во время выполнения, и это довольно сложные объединения - несколько таблиц, использует PARTITION BY и т.д. Поэтому я хочу избежать выполнения одного и того же подзапроса, если значение не равно «0». Есть ли способ написать что-то вроде этого

SELECT ..., 
       (SELECT DECODE ((SELECT 23 FROM DUAL) as test, 
                        0, null,
                       test)  
         FROM DUAL) 
  FROM ...
7
задан OMG Ponies 1 June 2011 в 04:19
поделиться