Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将数值转换为数据类型数值时出现算术溢出错误。平均选择状态_Sql_Average - Fatal编程技术网

Sql 将数值转换为数据类型数值时出现算术溢出错误。平均选择状态

Sql 将数值转换为数据类型数值时出现算术溢出错误。平均选择状态,sql,average,Sql,Average,我试图使用AVG函数对给定月份的值求平均值,但它在将数值转换为数据类型数值时抛出了算术溢出错误。在谷歌搜索之后,造成这种情况的常见原因似乎是试图将AVG函数的输出存储到数据类型不适合传入值的变量/列中。我在尝试选择值时收到此错误 --Hours (DECIMAL(18,4)), Starts (DECIMAL(18,4)) SELECT ID, Avg(Hours), Avg(Starts) FROM MonthlyReadings WHERE ReadingDate < '2016-03

我试图使用AVG函数对给定月份的值求平均值,但它在将数值转换为数据类型数值时抛出了
算术溢出错误。
在谷歌搜索之后,造成这种情况的常见原因似乎是试图将AVG函数的输出存储到数据类型不适合传入值的变量/列中。我在尝试
选择值时收到此错误

--Hours (DECIMAL(18,4)), Starts (DECIMAL(18,4))
SELECT ID, Avg(Hours), Avg(Starts)
FROM MonthlyReadings
WHERE ReadingDate < '2016-03-01'
AND   ReadingDate > DATEADD(MM, -36, '2016-03-01')
AND   MONTH(ReadingDate) = 1
GROUP BY ID
--小时(十进制(18,4)),开始(十进制(18,4))
选择ID、平均(小时)、平均(启动)
从每月阅读
其中读取日期<'2016-03-01'
和ReadingDate>DATEADD(MM,-36,'2016-03-01')
月份(读取日期)=1
按ID分组

知道我为什么会出现此错误吗?

结果数据类型是从要聚合的字段继承的。您需要一个足够大的数据类型来容纳
SUM()
,为了计算
AVG()
,您应该可以使用
FLOAT
或扩展您的
DECIMAL

SELECT ID, Avg(CAST(Hours AS FLOAT)), Avg(CAST(Starts AS FLOAT))
FROM MonthlyReadings
WHERE ReadingDate < '2016-03-01'
AND   ReadingDate > DATEADD(MM, -36, '2016-03-01')
AND   MONTH(ReadingDate) = 1
GROUP BY ID
选择ID、Avg(转换(小时为浮动))、Avg(转换(开始为浮动))
从每月阅读
其中读取日期<'2016-03-01'
和ReadingDate>DATEADD(MM,-36,'2016-03-01')
月份(读取日期)=1
按ID分组

hours和start都是
INT
?不,它们是
十进制(18,4)