函数返回十进制,导致“算术溢出错误”

时间:2014-07-02 22:16:38

标签: sql sql-server

我有一个接受两个参数的函数,获取记录总数,获取“RecordValue”字段的总值,然后返回计算的平均值。这与获得任何“平均”数字的方式相同...(总数/记录数=平均值)。

DECLARE @RecordCount INT = 0
DECLARE @RecordTotal INT = 0
DECLARE @RecordAverage DECIMAL(3,2) = 0.00

SET @RecordCount = (SELECT COUNT(*) FROM <query here>)

SET @RecordTotal = (SELECT SUM(RecordValue) FROM <query here>)  

SET @RecordAverage = (CAST(@RecordCount AS DECIMAL(5,2))) / (CAST(@RecordTotal AS DECIMAL(5,2)))

现在,如果我运行SCRIPT FUNCTION AS&gt;在SQL Server Management Studio中选择TO,它给了我一个有效的小数,当我为我正在寻找的第一条记录运行时,返回9.75。

我的存储过程调用此函数并向其传递两个必需参数,这是我在单独运行函数时“手动”使用的:

SELECT dbo.MyFunctionThatReturnsAnAverage(RecordTypeId, RecordCategory) AS 'Returned Average'
    FROM <query here>

然而,当我运行时,我收到以下错误:

Arithmetic overflow error converting numeric to data type numeric. (line 53)

第53行是SELECT语句。所有变量都正确声明,小数为DECIMAL(5,2)。无需发布正在进行的大量查询(许多连接和诸如此类的东西),有人看到我如何计算这个平均值有问题吗?

0 个答案:

没有答案