2014-02-06 1 views
-1

나는 다음과 같은 성명에서 비율을 얻기 위해 노력하고 있어요 :분할 TSQL

Select ((query1)/(query2)) AS Ratio. 

[결과가 0입니다 실제 결과는 그래서 SQL 제로로 반올림한다 .34 입니다. 이 문제를 어떻게 해결할 수 있습니까?

+0

정수부. 'numeric'또는 'float'의 한 쪽을 캐스팅하십시오 –

+0

SELECT 문을 사용하면 결과는 여전히 0입니다. 각 쿼리의 결과는 숫자이지만, division은 위로 – ColorfulWind

+0

의 방정식을 불어 넣습니다. 네, 둘 다 정수입니다. 정수 나눗셈을 피하기 위해 분자와 분모는 정수가 아니어야합니다 ("전체"부분 만 반환하고 나머지는 무시합니다). 당신은 복제본을 보았습니까? –

답변

1
Select( 
     (SELECT 8) --<-- Query 1 returns INT 8 
      /
     (SELECT 5) --<-- Query 2 returns INT 5 
    ) AS Ratio 

는 두 값이 INT를하지만 나누었을 때 다시 진수 값을 얻을 수 있기 때문에, SQL Server는 int로 암시 적 변환을 수행하고 소수점을 절단하고 다시 정수를 반환합니다. 쿼리 위

SQL Server가 두 쿼리를 나누어 반환 된 결과에 암시 적 coversion 않는 두 쿼리에 의해 재곡 숫자 데이터 형식 결과로 변환 할 때 1

Select( 
     CAST((SELECT 8)AS NUMERIC(18,5)) --<-- Query 1 CAST as a DECIMAL or NUMERIC 
      /
     CAST((SELECT 5) AS NUMERIC(18,5)) --<-- Query 2 CAST as a DECIMAL or NUMERIC 
    ) AS Ratio 

를 반환하고

결과 반환 1.60000000000000000000