2009-06-08 8 views
1

Les résultats de mes deux instructions de sélection PL/SQL sont des entiers 27 & 50, je veux leur division (27/50) 0,54 à la sortie ... comment faire cela?diviser les résultats de deux instructions de sélection PL/SQL

J'ai essayé select * from ((sélectionnez ....)/(choisir ...)) mais ça ne fonctionne pas !!

+0

Je ne connais pas PL/SQL, mais essayez de convertir les deux opérandes en flottants avant de faire la division. Il peut faire une division entière, ce qui vous donnera 0 comme résultat (c'est ce que vous voyez?) –

Répondre

12
SELECT 
    (SELECT thefirst FROM singlerowtable)/
    (SELECT theother FROM othersinglerow) AS result 

Vous pouvez également utiliser CAST(thefirst AS FLOAT) si vous voulez vous assurer une division FLOAT, & c.

3

Dans votre clause FROM, vous ne pouvez joindre que des ensembles de résultats, vous ne pouvez pas utiliser d'autres opérateurs de ce type.

Vous pouvez cependant utiliser des opérateurs arithmétiques dans votre clause SELECT, par ex. (Comme Alex a déjà dit):

SELECT (SELECT thefirst ...) 
    /
     (SELECT thesecond ...) AS result 
FROM DUAL; 

ou bien:

SELECT A.thefirst/B.thesecond AS result 
FROM (SELECT thefirst ...) A 
     ,(SELECT thesecond ...) B; 

La première approche échouera si les jeux de résultats ne sont pas exactement une ligne chacun.

La deuxième approche fonctionnera même si les ensembles de résultats ont plus d'une ligne - vous devrez peut-être fournir des critères de jointure entre A et B si vous ne voulez pas une jointure cartésienne entre les deux ensembles de résultats.

+1

aussi, attention aux erreurs de division par zéro! –

Questions connexes