2014-02-06 38 views
-1

我想从下面的语句的比例除以造成零两个查询,TSQL

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

结果为0。实际的结果是0.34 所以SQL被四舍五入为零。我怎样才能解决这个问题?

+0

整数除法。将其中一个边转换为'numeric'或'float' –

+0

当我尝试下面的语句时:SELECT((5)/(10))结果仍然是0.每个查询都会产生一个数字,但除法将方程向上吹来 – ColorfulWind

+0

是的,他们都是整数。分子和分母需要非整数以避免整数除法(它只返回“整个”部分而忽略余数)。你看过重复吗? –

回答

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

因为价值观诠释,但分,当你得到一个十进制值回,SQL Server会隐式转换为INT,将截断小数点,并返回一个整数回来。

上面的查询返回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 

当转换成由两个查询SQL Server会通过将两个查询返回的结果隐式丁文重新调校的数字数据类型的结果,并返回

结果:1.60000000000000000000