我有一个接受两个参数的函数,获取记录总数,获取“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)。无需发布正在进行的大量查询(许多连接和诸如此类的东西),有人看到我如何计算这个平均值有问题吗?