除以两个查询,得到零,SQL

时间:2014-02-06 14:58:30

标签: sql-server-2008 tsql

我想从以下声明中获得一个比率:

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

结果为0.实际结果为.34 因此SQL四舍五入为零。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

因为两个值都是INT但是在分割时你得到一个十进制值,Sql Server会隐式转换为INT并截断任何Decimal点并返回一个整数。

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