我在做SQL Server查询计算,并且划分总是给我零。在Sql Server中划分2个数字
SUM(sl.LINES_ORDERED)
, SUM(sl.LINES_CONFIRMED)
, SUM(sl.LINES_CONFIRMED)/SUM(sl.LINES_ORDERED) AS 'Percent'
返回的样本数据集是:
在这个例子中,第三行应该具有1.02的除法值,但它示出为零。这是为什么?
我在做SQL Server查询计算,并且划分总是给我零。在Sql Server中划分2个数字
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)
感谢您的回复! :) – 2012-08-16 10:47:55
@JustinSamuel np :) – 2012-08-16 10:54:18
那是因为你divinding两个整数。
在划分第一转换的两个值,以小数:
, SUM(convert(decimal(12,2),sl.LINES_CONFIRMED))
/SUM(convert(decimal(12,2),sl.LINES_ORDERED)) AS 'Percent'
这两个问题是,你
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'
感谢您的回复! :) – 2012-08-16 10:48:33
注意,没有对值的可以给你1.02作为划分的结果,因为在每一对分红都小于除数。 (根据你的代码,第二个值除以第一个值,但你似乎已经通过其他方式验证了你的结果。) – 2012-08-16 10:36:54
是哎呀,我的坏.....你是对的! :) – 2012-08-16 10:42:33