oracle: le décodage et la sous-requête select résultat

J'ai un oracle de la requête d'une partie de l'est du calcul de la valeur à l'aide de DÉCODER. Par exemple:

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

Ici la valeur "23" obtient calculé au moment de l'exécution, et c'est assez compliqué rejoint - plusieurs tables, utilise PARTITION BY etc. Je tiens donc à éviter l'exécution de la même sous-requête si la valeur n'est pas "0". Est-il possible d'écrire quelque chose comme ceci

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

OriginalL'auteur hanumant | 2011-06-01