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
Vous devez vous connecter pour publier un commentaire.
Fera ce travail pour vous?
J'ai juste déplacé le "23" à une table en ligne avec un descriptif alias.
CAS de déclaration peut également ajouter de la clarté, comme dans:
OriginalL'auteur JosephStyons
Ou:
Vous permet d'utiliser la requête "q" tout au long de votre principal, sélectionnez, où jamais une sous-requête est autorisée. Appelé la clause, ou une Expression de Table Commune, ou une sous-Requête à l'Affacturage. Lire plus à ce sujet à Oracle-Base.com.
OriginalL'auteur DCookie
Pour ce scénario particulier, vous pouvez utiliser le
NULLIF
fonction:La
NULLIF
fonction renvoieNULL
si les deux arguments sont égaux, sinon elle renvoie le premier argument.OriginalL'auteur Cheran Shunmugavel
Vous pouvez utiliser la sous-requête dans la clause from et faire quelque chose comme ci-dessous:
OriginalL'auteur Yusuf Soysal
Mieux vous auriez CAS d'utilisation de l'instruction. depuis l'instruction du CAS, c'est comme une série d'instructions if, seulement à l'aide du mot-clé QUAND. Une instruction est évalué à partir du haut vers le bas. Si une condition est vraie, ALORS la clause est exécutée et l'exécution saute à la FIN de CAS (court-circuit d'évaluation) de la clause.
OriginalL'auteur janasainik