计算SQL Server 2008中的百分比

计算SQL Server 2008中的百分比,sql,sql-server,sql-server-2008,ssms,Sql,Sql Server,Sql Server 2008,Ssms,尝试查找修改项目的百分比,并在电子邮件警报中进行设置。在警报的另一部分中,百分比工作正常,但这是我遇到的问题 select CONVERT(NVARCHAR(10), 150) + ' (' + CONVERT(NVARCHAR(50), CONVERT(DECIMAL(12,2), ((50) / 150) * 100)) + '%' + ')' 这是使用现有的变量,这就是为什么它需要被转换,我只是在字段的位置输入了随机值。150为总项目,50为修改项目 我不确定为什么会出现“随机”值。我能

尝试查找修改项目的百分比,并在电子邮件警报中进行设置。在警报的另一部分中,百分比工作正常,但这是我遇到的问题

select CONVERT(NVARCHAR(10), 150) + ' (' + CONVERT(NVARCHAR(50), CONVERT(DECIMAL(12,2), ((50) / 150) * 100)) + '%' + ')'
这是使用现有的变量,这就是为什么它需要被转换,我只是在字段的位置输入了随机值。150为总项目,50为修改项目

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

这句话:

CONVERT(DECIMAL(12,2), ((50) / 150) * 100)
更简单地写为:

0
原因是SQLServer执行整数除法。因此,在进行除法之前,需要转换这些值。我经常用1.0乘以:

CONVERT(DECIMAL(12,2), ((50)*1.0 / 150) * 100)
我不知道为什么会出现“随机”值。我能理解意外的结果

这句话:

CONVERT(DECIMAL(12,2), ((50) / 150) * 100)
更简单地写为:

0
原因是SQLServer执行整数除法。因此,在进行除法之前,需要转换这些值。我经常用1.0乘以:

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

这起作用了。虽然这很奇怪,因为类似的计算在电子邮件报告的更高层使用,但出于某种原因,它没有转换这些值,但它们似乎是正确的。这是有效的。虽然这很奇怪,因为类似的计算在电子邮件报告的更高层使用,但出于某种原因,它不会转换这些值,但它们似乎是正确的。