结果转换为小数时 SQL 服务器出现算术溢出错误

Arithmetic overflow error in SQL Server when the result is cast to a decimal

SELECT 语句中,我试图计算精度为小数点后一位的百分比。

这条语句在select语句中returns出现算术溢出错误:

CAST(((COUNT(TicketNbr)*100.00)/@TotalCount) AS Decimal (3,1)) END AS Percentage

COUNT(TicketNbr)计数值为 10。

@TotalCount 值为 10。

如果我不投结果,结果是1.0000。但是当我使用CAST函数时,查询结果出现算术溢出错误。

为什么会出现这个错误?

10 * 100.0 / 10 的结果是 100.0

它需要最小的 decimal(4,1) 来保存该值。

将其转换为 decimal(3,1) 将导致溢出错误