6

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

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

返回的样本数据集是:

在此处输入图像描述

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

4

4 回答 4

28

尝试

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

整数除法只能返回整数,不能返回浮点数。您可以像上面的示例一样强制进行浮点除法。

于 2012-08-16T10:26:25.450 回答
3

试试这样:

SUM(sl.LINES_ORDERED) 
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED)*1.0 / SUM(sl.LINES_ORDERED)
于 2012-08-16T10:26:28.800 回答
2

这两个问题是你

  1. 执行整数除法(SUM返回整数),并且
  2. 你交换了除数和除数(这就是你得到零而不是一的原因)。

这就是你可以修复它的方法(注意LINES_ORDEREDLINES_CONFIRMED被交换):

SUM(sl.LINES_ORDERED) 
, SUM(sl.LINES_CONFIRMED)
, (1.0*SUM(sl.LINES_ORDERED)) / SUM(sl.LINES_CONFIRMED) AS 'Percent'
于 2012-08-16T10:28:00.157 回答
1

这将是因为您要对两个整数进行除法。

首先将除法中的两个值转换为小数:

, SUM(convert(decimal(12,2),sl.LINES_CONFIRMED)) 
/ SUM(convert(decimal(12,2),sl.LINES_ORDERED)) AS 'Percent'
于 2012-08-16T10:27:14.867 回答