2015-12-11 171 views
0

尝试查找修改项目的百分比并在电子邮件警报中进行设置。在警报中的另一部分比例正常工作,但这个是在SQL Server 2008中计算百分比

select CONVERT(NVARCHAR(10), 150) + ' (' + CONVERT(NVARCHAR(50), CONVERT(DECIMAL(12,2), ((50)/150) * 100)) + '%' + ')' 

它是利用现有的变量,这就是为什么它需要转换,我只是在输入随机值我遇到问题的行领域将是。 150个是总项目,50个是修改项目。

回答

3

我不确定为什么会出现“随机”值。我能理解意想不到的结果。

这个表达式:

CONVERT(DECIMAL(12,2), ((50)/150) * 100) 

更简单地写为:

0 

的原因是,SQL Server会整数除法。所以,你需要在分割之前转换这些值。我经常这样做乘以1.0:

CONVERT(DECIMAL(12,2), ((50)*1.0/150) * 100) 
+0

这工作。虽然它很奇怪,因为类似的计算在电子邮件报告中使用较高,但由于某种原因,它不会转换该值,但它们似乎是正确的。 –