4

我的两个 PL/SQL 选择语句的结果是整数 27 和 50,我希望它们的除法 (27/50) 输出时为 0.54...怎么做?

我试过 select * from ((select....)/(select ...)) 但它不起作用!!

4

2 回答 2

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

CAST(thefirst AS FLOAT)如果要确保除法,也可以使用FLOAT&c。

于 2009-06-08T01:14:40.683 回答
5

在您的 FROM 子句中,您只能将结果集连接在一起,不能使用其他类似的运算符。

但是,您可以在 SELECT 子句中使用算术运算符,例如(正如 Alex 已经说过的):

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 之间的连接标准。

于 2009-06-08T01:27:07.040 回答