2009-06-08 4 views
1

두 PL/SQL select 문의 결과는 정수 27 &입니다. 출력에서 ​​나눗셈 (27/50) 0.54를 원합니다 ... 어떻게 수행합니까?두 개의 PL/SQL select 문에서 결과를 나누는 것

시도했습니다 선택 * (선택 ....)/(선택 ...) 에서 선택 *하지만 작동하지 않습니다! 당신이 FLOAT 부문, & C를 확인하려면

+0

필자는 PL/SQL을 모르지만, 나눗셈을하기 전에 두 피연산자를 모두 float로 캐스팅 해보십시오. 그것은 당신이 결과로 0을 줄 것입니다 정수 나누기를 할 수 있습니다 (당신이 뭘보고 있니?) –

답변

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

또한 CAST(thefirst AS FLOAT)을 사용할 수 있습니다.

3

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 사이에 조인 조건을 제공해야 할 수 있습니다.

+1

또한, 0으로 나누기 오류 조심해! –