деление результатов двух операторов выбора PL / SQL - PullRequest
1 голос
/ 08 июня 2009

Результатами моих двух операторов выбора PL / SQL являются целые числа 27 и 50, я хочу, чтобы их деление (27/50) составляло 0,54 при выводе ... как это сделать?

Я пытался выбрать из ((выберите ....) / (выберите ...)) но это не работает !!

Ответы [ 2 ]

15 голосов
/ 08 июня 2009
SELECT 
  (SELECT thefirst FROM singlerowtable) / 
  (SELECT theother FROM othersinglerow) AS result

Вы также можете использовать CAST(thefirst AS FLOAT), если хотите обеспечить FLOAT деление, & c.

4 голосов
/ 08 июня 2009

В предложении FROM вы можете только объединять результирующие наборы, вы не можете использовать другие операторы, подобные этому.

Однако вы можете использовать арифметические операторы в предложении SELECT, например, (как уже сказал Алекс):

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

или, альтернативно:

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

Первый подход потерпит неудачу, если наборы результатов не будут содержать ровно по одной строке.

Второй подход будет работать, даже если наборы результатов имеют более одной строки - вам может потребоваться указать критерии соединения между A и B, если вы не хотите декартово соединение между двумя наборами результатов.

...