在Sql Server中划分2个数字

时间:2012-08-16 10:25:00

标签: sql sql-server

我正在进行SQL Server查询计算,而除法总是给我零。

SUM(sl.LINES_ORDERED) 
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED) / SUM(sl.LINES_ORDERED) AS 'Percent'

返回的样本数据集是:

enter image description here

在此示例中,第三行应具有1.02的除法值,但它显示为零。那是为什么?

4 个答案:

答案 0 :(得分:25)

SUM(sl.LINES_CONFIRMED) * 1.0 / SUM(sl.LINES_ORDERED)

整数除法只能返回完整数字而不能返回浮点数。您可以强制执行浮点除法,如上例所示。

答案 1 :(得分:3)

试试这样:

SUM(sl.LINES_ORDERED) 
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED)*1.0 / SUM(sl.LINES_ORDERED)

答案 2 :(得分:2)

这两个问题是你

  1. 执行整数除法(SUM返回整数)和
  2. 你交换了红利和除数(这就是为什么你得零而不是一个)。
  3. 这是您可以解决的问题(请注意LINES_ORDEREDLINES_CONFIRMED已交换):

    SUM(sl.LINES_ORDERED) 
    , SUM(sl.LINES_CONFIRMED)
    , (1.0*SUM(sl.LINES_ORDERED)) / SUM(sl.LINES_CONFIRMED) AS 'Percent'
    

答案 3 :(得分:1)

这是因为你要划分两个整数。首先将除法中的两个值转换为小数:

, SUM(convert(decimal(12,2),sl.LINES_CONFIRMED)) 
/ SUM(convert(decimal(12,2),sl.LINES_ORDERED)) AS 'Percent'