我正在做 SQL Server 查询计算,除法总是给我零。
SUM(sl.LINES_ORDERED)
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED) / SUM(sl.LINES_ORDERED) AS 'Percent'
返回的样本数据集是:
在此示例中,第三行的除法值应为 1.02,但显示为零。这是为什么?
我正在做 SQL Server 查询计算,除法总是给我零。
SUM(sl.LINES_ORDERED)
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED) / SUM(sl.LINES_ORDERED) AS 'Percent'
返回的样本数据集是:
在此示例中,第三行的除法值应为 1.02,但显示为零。这是为什么?
尝试
SUM(sl.LINES_CONFIRMED) * 1.0 / SUM(sl.LINES_ORDERED)
整数除法只能返回整数,不能返回浮点数。您可以像上面的示例一样强制进行浮点除法。
试试这样:
SUM(sl.LINES_ORDERED)
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED)*1.0 / SUM(sl.LINES_ORDERED)
这两个问题是你
SUM
返回整数),并且这就是你可以修复它的方法(注意LINES_ORDERED
和LINES_CONFIRMED
被交换):
SUM(sl.LINES_ORDERED)
, SUM(sl.LINES_CONFIRMED)
, (1.0*SUM(sl.LINES_ORDERED)) / SUM(sl.LINES_CONFIRMED) AS 'Percent'
这将是因为您要对两个整数进行除法。
首先将除法中的两个值转换为小数:
, SUM(convert(decimal(12,2),sl.LINES_CONFIRMED))
/ SUM(convert(decimal(12,2),sl.LINES_ORDERED)) AS 'Percent'