我正在进行SQL Server查询计算,而除法总是给我零。
SUM(sl.LINES_ORDERED)
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED) / SUM(sl.LINES_ORDERED) AS 'Percent'
返回的样本数据集是:
在此示例中,第三行应具有1.02的除法值,但它显示为零。那是为什么?
答案 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)
这两个问题是你
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'
答案 3 :(得分:1)
这是因为你要划分两个整数。首先将除法中的两个值转换为小数:
, SUM(convert(decimal(12,2),sl.LINES_CONFIRMED))
/ SUM(convert(decimal(12,2),sl.LINES_ORDERED)) AS 'Percent'